Многие функции в 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