Для доступа к элементам массива 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 Возврат Types. MATLAB не преобразует элементы любого другого типа массива Java.
Для примера, если a java.lang.Object
массив содержит java.lang.Double
, затем MATLAB преобразует элемент в MATLAB double
. Однако MATLAB не преобразует java.lang.Double
элемент в java.lang.Double
массив. MATLAB возвращает его как java.lang.Double
.