主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

MATLABへのJava配列引数の引き渡し

MATLAB関数の2次元配列引数

一部のMATLAB®関数は2次元配列を単独の入力引数として受け入れ,この配列の列を個別に使用します。既定では2次元配列をJava®からMATLABに渡した場合,配列は2番目の次元に沿って別々の引数に分割されます。この問題を回避するには,2次元配列を对象にキャストします。

双[][]data = {{1.0, 2.0, 3.0}, {-1.0, -2.0, -3.0}};HandleObject[] h = eng。函数宏指令(“阴谋”,(对象)数据);

多次元配列

MATLABとJavaではそれぞれ異なる表現によって多次元配列を表示します。しかし,インデックス式により同じ結果が生成されます。たとえば,次のコード例では,MATLABで3つの次元をもつ配列を定義しています。この配列変数はJavaに渡され,インデックスによる参照の結果が比較されます。

进口com.mathworks.engine。*;进口java.io.StringWriter;进口java.util.Arrays;public class ArrayIndexing {public static void main(String[] args) throws Exception {MatlabEngine eng = MatlabEngine. startmatlab ();StringWriter writer = new StringWriter();eng.eval(“(1:2,1:3,1)=(1、2、3、4、5、6];”);eng.eval(“(1:2,1:3,2)=[7,8,9,10,11,12]”);double[][][] A = engl . getvariable ("A");system . out。println("在Java中:\n"+数组。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でインデックス式の結果は同じです。

関連するトピック