Изменение структуры и реорганизация массивов

Многие функции в MATLAB ® могут взять элементы существующего массива и поместить их в другую форму или последовательность. Это может быть полезно для предварительной обработки ваших данных для последующих расчетов или анализа данных .

Изменение

The reshape функция изменяет размер и форму массива. Для примера измените форму матрицы 3 на 4 на матрицу 2 на 6.

A = [1 4 7 10; 2 5 8 11; 3 6 9 12]
A = 3×4

     1     4     7    10
     2     5     8    11
     3     6     9    12

B = reshape(A,2,6)
B = 2×6

     1     3     5     7     9    11
     2     4     6     8    10    12

Пока количество элементов в каждой форме одинаковое, можно перестроить их в массив с любым количеством размерностей. Использование элементов из A, создайте многомерный массив 2 на 2 на 3.

C = reshape(A,2,2,3)
C = 
C(:,:,1) =

     1     3
     2     4


C(:,:,2) =

     5     7
     6     8


C(:,:,3) =

     9    11
    10    12

Транспонирование и зеркальное отражение

Общей задачей в линейной алгебре является работа с транспонированием матрицы, которая превращает строки в столбцы, а столбцы в строки. Для этого используйте transpose функцию или .' оператор.

Создайте матрицу 3 на 3 и вычислите ее транспонирование.

A = magic(3)
A = 3×3

     8     1     6
     3     5     7
     4     9     2

B = A.'
B = 3×3

     8     3     4
     1     5     9
     6     7     2

Аналогичный оператор ' вычисляет сопряженное транспонирование для сложных матриц. Эта операция вычисляет комплексный сопряженный каждый элемент и транспонирует его. Создайте комплексную матрицу 2 на 2 и вычислите ее сопряженную транспонирование.

A = [1+i 1-i; -i i]
A = 2×2 complex

   1.0000 + 1.0000i   1.0000 - 1.0000i
   0.0000 - 1.0000i   0.0000 + 1.0000i

B = A'
B = 2×2 complex

   1.0000 - 1.0000i   0.0000 + 1.0000i
   1.0000 + 1.0000i   0.0000 - 1.0000i

flipud разворачивает строки матрицы в направление "сверху вниз", и fliplr разворот столбцов в направлении "слева направо".

A = [1 2; 3 4]
A = 2×2

     1     2
     3     4

B = flipud(A)
B = 2×2

     3     4
     1     2

C = fliplr(A)
C = 2×2

     2     1
     4     3

Перемена и вращение

Можно сдвинуть элементы массива на определенное количество позиций, используя circshift функция. Например, создайте матрицу 3 на 4 и сдвиньте ее столбцы вправо на 2. Второй аргумент [0 2] говорит circshift чтобы переместить строки на 0 мест и переместить столбцы на 2 места вправо.

A = [1 2 3 4; 5 6 7 8; 9 10 11 12]
A = 3×4

     1     2     3     4
     5     6     7     8
     9    10    11    12

B = circshift(A,[0 2])
B = 3×4

     3     4     1     2
     7     8     5     6
    11    12     9    10

Чтобы сдвинуть строки A вверх на 1 и сохранить столбцы на месте, задайте второй аргумент следующим [-1 0].

C = circshift(A,[-1 0])
C = 3×4

     5     6     7     8
     9    10    11    12
     1     2     3     4

The rot90 функция может повернуть матрицу против часовой стрелки на 90 степени.

A = [1 2; 3 4]
A = 2×2

     1     2
     3     4

B = rot90(A)
B = 2×2

     2     4
     1     3

Если вы вращаете еще 3 раза при помощи второго аргумента, чтобы задать количество вращений, вы заканчиваете с исходной матрицей A.

C = rot90(B,3)
C = 2×2

     1     2
     3     4

Сортировка

Сортировка данных в массиве также является ценным инструментом, и MATLAB предлагает ряд подходов. Для примера, sort функция сортирует элементы каждой строки или столбца матрицы отдельно в порядке возрастания или убывания. Создайте матрицу A и отсортируйте каждый столбец A в порядке возрастания.

A = magic(4)
A = 4×4

    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1

B = sort(A)
B = 4×4

     4     2     3     1
     5     7     6     8
     9    11    10    12
    16    14    15    13

Сортировка каждой строки в порядке убывания. Второе значение аргумента 2 указывает, что необходимо сортировать по строкам.

C = sort(A,2,'descend')
C = 4×4

    16    13     3     2
    11    10     8     5
    12     9     7     6
    15    14     4     1

Чтобы отсортировать целые строки или столбцы относительно друг друга, используйте sortrows функция. Например, отсортируйте строки A в порядке возрастания согласно элементам в первом столбце. Положения строк изменяются, но порядок элементов в каждой строке сохраняется.

D = sortrows(A) 
D = 4×4

     4    14    15     1
     5    11    10     8
     9     7     6    12
    16     2     3    13

Похожие темы