Для доступа к элементам массива объектов Java ® используйте синтаксис индексирования массива MATLAB ®,A(row,column). В программе Java синтаксис: A[row-1][column-1].
При ссылке на элементы матрицы MATLAB с одним подстрочным индексом MATLAB возвращает один элемент матрицы. Напротив, однострочная индексация в многомерный массив Java возвращает подчисток.
Например, создайте массив MATLAB.
for m = 1:4 for n = 1:5 matlabArr(m,n) = (m*10)+n; end end matlabArr
matlabArr =
11 12 13 14 15
21 22 23 24 25
31 32 33 34 35
41 42 43 44 45
Скопируйте содержимое в массив Java.
javaArr = javaArray('java.lang.Integer',4,5); for m = 1:4 for n = 1:5 javaArr(m,n) = java.lang.Integer(matlabArr(m,n)); end end javaArr
javaArr =
java.lang.Integer[][]:
[11] [12] [13] [14] [15]
[21] [22] [23] [24] [25]
[31] [32] [33] [34] [35]
[41] [42] [43] [44] [45]Значение индекса 3 возвращает один элемент в массиве MATLAB.
matlabArr(3)
ans = 31
Значение индекса 3 возвращает всю третью строку массива Java.
javaArr(3)
ans =
java.lang.Integer[]:
[31]
[32]
[33]
[34]
[35]Линейная индексация в массив Java позволяет указать весь массив из большей структуры массива. Затем можно управлять им как объектом.
Чтобы задать диапазон элементов в массиве, используйте команду colon оператор (:). Например, создайте массив Java 4 на 5.
dblArray = javaArray('java.lang.Double',4,5); for m = 1:4 for n = 1:5 dblArray(m,n) = java.lang.Double((m*10)+n); end end dblArray
dblArray =
java.lang.Double[][]:
[11] [12] [13] [14] [15]
[21] [22] [23] [24] [25]
[31] [32] [33] [34] [35]
[41] [42] [43] [44] [45]Создание подмассива row2Array от элементов в столбцах 2 до 4.
row2Array = dblArray(2,2:4)
row2Array =
java.lang.Double[]:
[22]
[23]
[24]
Можно также использовать двоеточие с линейной индексацией для ссылки на все элементы во всей матрице. Однако массивы Java и MATLAB хранятся в памяти по-разному, что означает, что порядок элементов в линейном массиве различен. Элементы массива Java хранятся в формате «строка за столбцом» - порядке, соответствующем строкам матрицы. Элементы массива MATLAB хранятся по столбцам - порядок, соответствующий столбцам. Например, преобразуйте массив 4 на 5 dblArray в линейный массив 20 на 1.
linearArray = dblArray(:)
linearArray =
java.lang.Double[]:
[11]
[12]
[13]
[14]
[15]
[21]
[22]
[23]
[24]
[25]
[31]
[32]
[33]
[34]
[35]
[41]
[42]
[43]
[44]
[45]Для ссылки на массив верхнего уровня в многоуровневом массиве Java используйте end ключевое слово в качестве первого подстрочного индекса. Например, отображение данных от третьей до последней строк массива Java dblArray.
last2rows = dblArray(3:end,:)
last2rows =
java.lang.Double[][]:
[31] [32] [33] [34] [35]
[41] [42] [43] [44] [45]Не использовать end на массивах нижнего уровня. Из-за потенциально рваного характера массивов MATLAB не может определить конечное значение. Дополнительные сведения см. в разделе Форма массивов Java.
При доступе к элементу java.lang.Object MATLAB преобразует элемент в тип MATLAB на основе таблицы в java.lang.Object Return Types. MATLAB не преобразует элементы любого другого типа массива Java.
Например, если java.lang.Object массив содержит java.lang.Double элемент, затем MATLAB преобразует элемент в MATLAB double. Однако MATLAB не преобразует java.lang.Double элемент в java.lang.Double массив. MATLAB возвращает его как java.lang.Double.