К элементам доступа объектного массива 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
(:
). Например, создайте 4 5 массив Java.
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 преобразовывает элемент в double
MATLAB. Однако MATLAB не преобразовывает элемент java.lang.Double
в массиве java.lang.Double
. MATLAB возвращает его как java.lang.Double
.