Об использовании операции формирования диапазона

Удаление строк и столбцов матрицы

Создавать новые массивы можно также путём удаления строк и столбцов исходных массивов. Для этих целей используются парные квадратные скобки ([ ]), которые в системе 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 =

[ ]