Применение функций и операторов

9 8 7

1 0 1

1 2 3

9 8 7

1 2 3 4 5 6 7 8 9 10

1 0 1

1 2 4 2 3

Замена списка переменных массивами ячеек

6 2

Size(B)

3 4

Size(A)

Изменение формы (размерностей) массива ячеек

Удаление ячеек

Вы можете удалить полностью любую размерность массива ячеек с использованием одного выражения. Как и в стандартном случае удаления массивов, нужно использовать векторное индексирование при удалении строк или столбцов массива ячеек, с приравниванием данной размерности пустой мастрице, например

.

A(:, 2) = [ ]

 

При удаленни ячеек, фигурные скобки вообще не используются в соответствующих выра-жениях.

Ка и в случае любых других массивов, для изменения формы массива ячеек можно приме-нить функцию reshape. При этом общее число ячеек должно остаться тем же, то есть вы не можете использовать данную функцию для добавления или удаления ячеек.

 

A = cell(3, 4);

ans =

B = reshape(A,6,2);

ans =

Массивы ячеек могут быть ипользованы для замены списка переменных MATLAB-а в сле-дующих случаях:

  • В списке входных аргументов.
  • В списке выходных переменных.
  • В операциях отображения на дисплей.
  • При конструировании массивов (квадоатные скобки и фигурные скобки).

Если вы используете оператор двоеточия для индексации набора ячеек в сочетании с фигур-ными скобками, то MATLAB обращается с каждой ячейкой как с отдельной переменной. Например, допустим вы имеете массив ячеек T, где каждая ячейка содержит отдельный век-тор. Выражение T{1:5} эквивалентно списку векторов в первых пяти ячейках массива T, то есть оно равносильно записи

 

[ T{1} , T{2} , T{3} , T{4} , T{5} ]

 

Рассмотрим массив ячеек C:

 

C(1) = {[1 2 3]};

C(2) = {[1 0 1]};

C(3) = {1:10};

C(4) = {[9 8 7]};

C(5) = {3};

 

Для свертки векторов в C(1) и C(2) с использованием функции conv, нужно записать

 

d = conv(C{1:2})

d =

 

Для вывода на дисплей векторов со второго по четвертый введем

 

C{2:4}

 

Это даст

 

ans =

ans =

ans =

 

Аналогично, вы можете создать новый числовой массив используя выражение

 

B = [ C{1}; C{2}; C{4} ]

 

что приводит к

 

B =

Вы можете также использовать соответствующую индексацию в левой части оператора при-сваивания для создания нового массива ячеек, где каждая ячейка содержит один выходной аргумент

 

[D{1:2}] = eig (B)

D =

[3x3 double] [3x3 double]

Напомним, что при задании двух выходных аргументов, выходом функции eig(B)является модальная матрица, составленная из нормированных собственных векторов матрицы Bи ди-агональная матрица собственных значений. Вы можете вывести в командное окно действи-тельные значения собственных векторов и значений вводя D{1}иD{2}.

Для применения функций или операторов к содержимому ячеек нужно воспользоваться со-ответствующей индексацией. Например, зададим массив ячеек А

 

A{1, 1} = [1 2; 3 4];

A{1, 2} = randn (3,3);

A{1, 3} = 1 : 5;

 

Тогда, для применения функции sumк содержимому первой ячейки массива запишем

 

B = sum (A{1,1})

 

Что приводит к следующему результату

 

 

B =