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

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

Изменение

Функция 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

Функция 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

Похожие темы

Была ли эта тема полезной?