MATLAB итерация по матрице

  1. Итерировать по матрице, используя линейное индексирование в MATLAB
  2. Итерировать по матрице с помощью функции arrayfun() в MATLAB
  3. Итерировать по матрице с помощью функции cellfun() в MATLAB

В этом руководстве будет обсуждаться, как выполнять итерацию по матрице, используя функции линейной индексации, arrayfun() и cellfun() в MATLAB.

Итерировать по матрице, используя линейное индексирование в MATLAB

В матрице существует два вида индексации; один - это индексирование строк и столбцов, при котором мы должны указать номер строки и столбца для доступа к элементу, присутствующему в матрице, второй - это линейное индексирование, при котором мы можем получить доступ к элементу, используя только его линейный индекс. Например, см. Код ниже.

m = [2 6 1; 17 19 18]
row_col_index = m(2,3)
linear_index = m(6)

Выход:

m =

     2     6     1
    17    19    18


row_col_index =

    18


linear_index =

    18

В приведенном выше коде мы обращаемся к последнему элементу матрицы, используя оба вида индексации. При линейной индексации элементы присутствуют в матрице, начиная с первого столбца. Итак, если вы отсчитываете от первого столбца, последний элемент присутствует в шестом индексе. Чтобы перебрать матрицу с использованием индексации строк и столбцов, вам потребуется два цикла, но в случае линейной индексации вам потребуется только один цикл. Например, давайте переберем матрицу, используя линейную индексацию. См. Код ниже.

m = [2 6 1; 17 19 18];
for i = 1:numel(m)
    disp(m(i))
end

Выход:

     2

    17

     6

    19

     1

    18

Выше мы использовали функцию numel(), чтобы получить общее количество элементов, присутствующих в данной матрице. И, используя цикл и линейную индексацию, мы отображали каждый элемент один за другим в командном окне. Обратите внимание на последовательность, в которой элементы отображаются в командном окне, и это последовательность линейной индексации.

Итерировать по матрице с помощью функции arrayfun() в MATLAB

Если у вас есть функция и вы хотите применить ее к каждому элементу массива или матрицы, один из способов сделать это - перебрать каждый элемент, как описано выше, и применить функцию к каждому элементу, но есть еще один простой способ, в котором вы может использовать arrayfun() для применения данной функции к каждому элементу массива или матрицы. См. Код ниже.

output = arrayfun(myFunction , array);

В приведенном выше коде arrayfun() применяет функцию, хранящуюся в myFunction, к каждому элементу массива один за другим и сохраняет результат в переменной output. Например, давайте применим определенную функцию к каждому элементу матрицы. См. Код ниже.

myMatrix = [0 90; 180 270]
myFunction = @(x) cos(x);
output = arrayfun(myFunction , myMatrix)

Выход:

myMatrix =

     0    90
   180   270


output =

    1.0000   -0.4481
   -0.5985    0.9844

Как видно из выходных данных, функция cos(x) применяется к каждому элементу матрицы, а результат сохраняется в переменной output. Проверьте эту ссылку для получения дополнительной информации о arrayfun().

Итерировать по матрице с помощью функции cellfun() в MATLAB

Если у вас есть функция и вы хотите применить ее к каждому элементу данной ячейки, один из способов сделать это - перебрать каждый элемент, как описано выше, и применить функцию к каждому элементу, но есть еще один простой способ, с помощью которого вы можете используйте cellfun(), чтобы применить данную функцию к каждому элементу ячейки. См. Код ниже.

output = cellfun(myFunction , myCell);

В приведенном выше коде cellfun() применяет функцию, хранящуюся в myFunction, к каждому элементу ячейки один за другим и сохраняет результат в переменной output. Например, давайте применим определенную функцию к каждому элементу ячейки. См. Код ниже.

myCell = {0,90,180,270}
myFunction = @(x) sin(x);
output = cellfun(myFunction , myCell)

Выход:

myCell =

  1×4 cell array

    {[0]}    {[90]}    {[180]}    {[270]}


output =

         0    0.8940   -0.8012   -0.1760

Как видно из вывода, функция sin(x) применяется к каждому элементу ячейки, а результат сохраняется в переменной output. Проверьте эту ссылку для получения дополнительной информации о cellfun().

Сопутствующая статья - MATLAB Matrix

  • MATLAB создает случайную матрицу
  • Суммирование элементов матрицы в MATLAB