在Java中获得MATLAB矩阵的double[][]的最快方法是什么?
我需要在Java中使用MATLAB/Octave和ProcessBuilder类。我有一个参数,它将是一个非常非常长的字符串,形状为MATLAB/倍频程数组在Java中获得MATLAB矩阵的double[][]的最快方法是什么?,java,matlab,matrix,octave,processbuilder,Java,Matlab,Matrix,Octave,Processbuilder,我需要在Java中使用MATLAB/Octave和ProcessBuilder类。我有一个参数,它将是一个非常非常长的字符串,形状为MATLAB/倍频程数组 [1 2 3 4; 4 5 6 3; . . . 3 4 2 5] 因此,我开始编写代码,其中A是矩阵,matA将成为ProcessBuilder对象中的参数 String matA = "["; for(int i = 0; i < rows; i++) { for(int j = 0;
[1 2 3 4;
4 5 6 3;
.
.
.
3 4 2 5]
因此,我开始编写代码,其中A
是矩阵,matA
将成为ProcessBuilder对象中的参数
String matA = "[";
for(int i = 0; i < rows; i++) {
for(int j = 0; j < columns; j++) {
matA = matA + " " + A[i][j];
}
if(i < rows-1)
matA = matA + ";";
}
matA = matA + "]";
System.out.println(matA);
我的MATLAB/Octave文件如下所示:
function singularvaluesdecomposition(A)
[U, S, ~] = svd(A);
U
diag(S)
end
但是建造matA需要花费大量的时间。有更快的方法吗?当大量更改数据时,最好使用StringBuilder而不是String。 字符串是不可变的,可以通过创建另一个对象来更改它们,尽管用户无法直观地看到这一点 试试这个:
StringBuilder matA = new StringBuilder("[");
for(int i = 0; i < rows; i++) {
for(int j = 0; j < columns; j++) {
matA.append(" " + A[i][j]);
}
if(i < rows-1)
matA.append(";");
}
matA.append("]");
System.out.println(matA);
StringBuilder matA=新的StringBuilder(“[”);
对于(int i=0;i
有关更多信息:
谢谢。快多了!但现在我又犯了一个错误<代码>线程“main”java.lang.OutOfMemoryError中的异常:java堆spac也许我应该尝试从java.lang.OutOfMemory调用Python代码以增加堆大小。例如,如果您正在终端中运行代码,请使用:java-Xmx6g myclassI我正在使用Eclipse。改为从ProcessBuilder发送双[][]数组是更好的方法吗?在Eclipse.ini文件或从gui follow中编辑或添加-Xmx6g
StringBuilder matA = new StringBuilder("[");
for(int i = 0; i < rows; i++) {
for(int j = 0; j < columns; j++) {
matA.append(" " + A[i][j]);
}
if(i < rows-1)
matA.append(";");
}
matA.append("]");
System.out.println(matA);