私の目標は、JavaプログラムからMatlabの実行ファイルを実行することです。このメカニズムをテストするために、私は入力を取り、値をファイルに書き込むJavaプログラムを持っています。 Matlab.exeは、ファイルを読み込んで内容を表示するようにプログラムされています。 (これがうまくいったん動作したら、私はMatlabの主要な操作を進めます)。Matlab exeがJavaで作成されたファイルを読み取ることができません
しかし残念ながら、Matlabの実行ファイルを使用してファイルの内容を印刷することはできません。 ここに私のJavaコードがあります。
public class JavaMatlab_I_O
{
public void MatlabexeCall(String commandline)
{
try
{
String line;
Process p = Runtime.getRuntime().exec(commandline);
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null)
{
System.out.println(line);
}
input.close();
}
catch (Exception err)
{
err.printStackTrace();
}
}
public static void main(String[] args)
{
FileOutputStream fop = null;
File file;
String inp;
System.out.println("Enter Data: ");
Scanner obj = new Scanner(System.in);
inp = obj.next();
try
{
file = new File("C:\\Users\\PritamDash\\Documents\\MATLAB\\TestFile2.txt");
fop = new FileOutputStream(file);
// if file doesnt exists, then create it
if (!file.exists())
{
file.createNewFile();
}
// get the content in bytes
byte[] contentInBytes = inp.getBytes();
fop.write(contentInBytes);
fop.flush();
fop.close();
}
catch (IOException e)
{
e.printStackTrace();
}
JavaMatlab_I_O test = new JavaMatlab_I_O();
test.MatlabexeCall("C:\\Users\\PritamDash\\Documents\\MATLAB\\myfunc1.exe");
System.out.println("Done");
}
}
MATLABコード
function myfunc1()
disp(importdata('TestFile2.txt'));
end
私はMathWorks社のMATLABコマンドで!myfunc1.exe
を実行すると、私はそれが正常に動作促しMCC
mcc -mv myfunc1.m
を使用してexeファイルを生成しました。ファイル操作を削除し、myfunc1.exeを使用して文字列を単に印刷すると、Javaから呼び出されたときに正常に動作します。 Javaのプログラムがファイルをトリガすることができませんなぜ私が識別することができませんが、MATLABで読み出し動作にあなたのMATLAB関数を変更しよう
。提案をありがとう! – Pritam