主要内容

通过Java数组参数MATLAB

的二维数组参数MATLAB功能

一些MATLAB®函数接受二维数组作为单个输入参数,并分别使用数组的列。默认情况下,如果您将一个2-D数组从Java传递给MATLAB®时,数组沿第二次维度被分割成单独的参数。要避免此问题,请将2-D数组强制转换为对象:

双[][]data = {{1.0, 2.0, 3.0}, {-1.0, -2.0, -3.0}};HandleObject[] h = eng。feval(“plot”,(对象)数据);

多维数组

MATLAB和Java使用不同的表示方式来显示多维数组。然而,索引表达式产生相同的结果。例如,这段示例代码在MATLAB中定义了一个三维数组。然后将数组变量传递给Java,并比较索引引用的结果。

进口com.mathworks.engine。*;进口java.io.StringWriter;进口java.util.Arrays;public class arrayindex {public static void main(String[] args)抛出异常{MatlabEngine eng = MatlabEngine. startmatlab ();StringWriter writer = new StringWriter();eval("A(1:2,1:3,1) = [1,2,3;4,5,6];");eval("A(1:2,1:3,2) = [7,8,9;10,11,12]");double[][][] A = eng.getVariable("A");system . out。println("In Java: \n"+ Arrays.deepToString(A)); eng.eval("A(1,1,:)",writer,null); System.out.println("A(1,1,:) " + writer.toString()); System.out.println("Java [0][0][0] " + A[0][0][0]); System.out.println("Java [0][0][1] " + A[0][0][1]); } }

下面是程序输出,显示MATLAB和Java如何显示数组。在MATLAB:

(:: 1) = 1 2 3 4 5 6(:,:, 2)在Java = 7 8 9 10 11 12: [[[1.0, 7.0], [2.0, 8.0], [3.0, 9.0]], [[4.0, 10.0], [5.0, 11.0], [6.0, 12.0]]]

下面是显示每个外部维度中第一个元素的索引引用的结果:

(1 1:) ans (:,: 1) = 1 ans (:,: 2) = 7 Java [0] [0] [0] 1.0 Java [0] [0] [1] 7.0

在MATLAB和Java中,索引表达式的结果是相同的。

相关的话题