Доступ к элементам массива Java

Индексация массива MATLAB

К элементам доступа объектного массива 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.

Преобразование элементов объектного массива к типам MATLAB

Когда вы получаете доступ к элементу массива java.lang.Object, MATLAB преобразовывает элемент в тип MATLAB, на основе таблицы в java.lang. Объектные Типы Возврата. MATLAB не преобразовывает элементы никакого другого типа массива Java.

Например, если массив java.lang.Object содержит элемент java.lang.Double, то MATLAB преобразовывает элемент в double MATLAB. Однако MATLAB не преобразовывает элемент java.lang.Double в массиве java.lang.Double. MATLAB возвращает его как java.lang.Double.

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте