Удаление строк и столбцов матрицы
Создавать новые массивы можно также путём удаления строк и столбцов исходных массивов. Для этих целей используются парные квадратные скобки ([ ]), которые в системе MATLAB обозначают пустой массив. Пусть, например, требуется удалить вторую строку матрицы R:
>> R=[3 2 4 1; -3 -6 -5 7; 0 1 8 2]
R=
3 2 4 1
-3 -6 -5 7
0 1 8 2
С этой целью присвоим второй строке матрицы R пустой массив, используя квадратные скобки:
>> R (2,:)=[ ]
R=
3 2 4 1
0 1 8 2
Аналогично можем удалить второй и третий столбцы получившейся в результате матрицы
>> R (:, 2: 3)=[ ]
R=
3 1
0 2
Использование функций перестановки частей матриц.
Отметим, что в системе MATLAB существует также несколько функций, позволяющих формировать новые массивы посредством перестановки частей имеющихся матриц. Это, например, функция fliplr, которая переставляет столбцы заданной матрицы относительно вертикальной оси:
>> N=[1 2 3 4; 5 6 7 8; 9 10 11 12]
N=
1 2 3 4
5 6 7 8
9 10 11 12
>> Np=fliplr (N)
Np=
4 3 2 1
8 7 6 5
12 11 10 9
Функция flipud переставляет строки заданной матрицы относительно горизонтальной оси (столбцы матрицы переворачиваются «вверх ногами»):
>> Np=flipud (N)
Np=
9 10 11 12
5 6 7 8
1 2 3 4
Заметим, что функция flipdim (N, dim) осуществляет переворот относительно размерности с номером dim. В частности, команда flipdim (N, 1) реализует перестановку строк, а flipdim (N, 2) — перестановку столбцов.
Функция rot90 «поворачивает» заданную матрицу на 90 градусов против часовой стрелки:
>> Np=rot90 (N)
Np=
4 8 12
3 7 11
2 6 10
1 5 9
Функция rot90 (N, k) «поворачивает» заданную матрицу N на 90 градусов против часовой стрелки k раз, например:
>> Np=rot90 (N, 2)
Np=
12 11 10 9
8 7 6 5
4 3 2 1
Об ускорении операций задания массива
В рассмотренной ситуации вместе с тем имеется несколько простых способов существенно увеличить скорость работы MATLAB. Во-первых, можно предварительно выделить всю необходимую память под конечный размер массива, используя для этих целей, в частности, вызовы функций ones или zeros, которые сразу задают массив нужного размера, заполненный соответственно единицами или нулями. В дальнейшем постепенное присвоение элементам нужных значений не будет сопровождаться перестройкой структуры памяти, отведённой под массив, вследствие чего будет достигнут выигрыш во времени. Так, например, для массива a можно перед присваиванием осуществить следующий вызов функции:
>> a=ones (1, 3)
a=
1 1 1
где вывод в командное окно результата вызова функции ones показывает, что сразу создаётся массив из трёх элементов, равных единице. Далее можно реализовать показанные выше присваивания нужных значений элементам массива a.
Во-вторых, можно осуществить присваивание значений элементам массива a в обратном порядке — начиная с последних по номеру элементов и заканчивая первым:
>> a=ones (1, 3)
a=
1 1 1
>> a (3)=0.05;
>> a (2)=-1.4;
>> a (1)=0.8;
В данном случае при выполнении первого же присваивания система MATLAB выделяет память под три вещественных числа, присваивает указанное значение третьему элементу, второму, а затем и первому.
Поясним, что функция ones используется для создания матрицы, состоящей из единиц. Она принимает два аргумента, первым из которых задаётся количество строк, а вторым — количество столбцов формируемой матрицы. Если данная функция задана с одним аргументом, то будет создана квадратная матрица соответствующего вида. Для создания матрицы, состоящей из нулей (нулевой матрицы), предназначена функция zeros. Она также может быть задана с одним или двумя аргументами.
Об использовании операции формирования диапазона
Ещё один способ создания одномерных массивов основан на применении специальной операции, обозначаемой двоеточием (:) и называемой «операцией формирования диапазона» числовых значений. Ниже приведён пример формирования одномерного массива чисел в диапазоне от 2 до 7 с приращением (шагом) равным 0.1:
>> s=2: 0.1: 7;
Поясним ещё раз, как работает эта операция. Сначала она включает в создаваемый массив левую границу диапазона (это число, стоящее левее первого многоточия). Далее к этому числовому значению прибавляется приращение (это число, стоящее сразу после первого многоточия). Если полученная сумма не превосходит верхней границы диапазона (это число, стоящее правее второго многоточия), то она включается в качестве элемента в создаваемый массив. Всё это повторяется до тех пор, пока очередное числовое значение не превысит верхнюю границу.
Как и в ряде языков программирования в MATLAB допускается существование пустых массивов, не содержащих ни одного элемента, например:
>> y=[ ]
y =
[ ]