Вы можете извлекать данные из массивов ячеек или же запоминать данные в имеющемся или вновь созданном массиве ячеек двумя способами:
Использованием индексации содержимого ячеек при помощи обычных индексов.
Использованием индексов, заключенных в фигурные скобки.
Доступ к данным массивов ячеек с использованием фигурных скобок
Вы можете использовать индексирование содержимого в правой части выражения для обра-щения ко всем данным в какой-либо отдельной ячейке. Для этого в левой части выражения следует задать переменную для записи содержимого ячейки. Заключите индексы ячеек в фигурные скобки. Это означает, что вы обращаетесь к содержимому ячейки. Рассмотрим следующий массив N размера 2х2:
N{1,1} = [1 2; 4 5];
N{1,2} = 'Name';
N{2,1} = 2 – 4i;
N{2,2} = 7;
Вы можете получить строку в N{1,2} записав
c = N{1,2}
При вводе данной строки MATLAB выдаст
c =
Name
Внимание!В операторах присваиваниявы можете использовать индексацию содержимого только для обращения к одной ячейке, а не к подмножеству ячеек. Например, оба выражения
A{1, :} = value и B = A{1, :} являются неправильными.
Для обращения к подмножествам содержимого одной ячейки нужно объединить индексиро-вание. Например, чтобы получить элемент (2,2) массива в ячейкеN{1,1}, следует записать:
d = N{1,1} (2,2)
что даст
d =
Обращение к подмножествам массива ячеек
Для присваивания любого множества ячеек некоторой переменной, нужно воспользоваться индексацией содержимого ячеек. При этом оператор двоеточия служит для доступа к под-множествам ячеек в пределах иассива ячеек.
Удаление ячеек
Вы можете удалить полностью любую размерность массива ячеек с использованием одного выражения. Как и в стандартном случае удаления массивов, нужно использовать векторное индексирование при удалении строк или столбцов массива ячеек, с приравниванием данной размерности пустой мастрице, например
.
A(:, 2) = [ ]
При удаленни ячеек, фигурные скобки вообще не используются в соответствующих выра-жениях.
Изменение формы (размерностей) массива ячеек
Ка и в случае любых других массивов, для изменения формы массива ячеек можно приме-нить функцию reshape. При этом общее число ячеек должно остаться тем же, то есть вы не можете использовать данную функцию для добавления или удаления ячеек.
A = cell(3, 4);
Size(A)
ans =
3 4
B = reshape(A,6,2);
Size(B)
ans =
6 2
Замена списка переменных массивами ячеек
Массивы ячеек могут быть ипользованы для замены списка переменных 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 =
1 2 4 2 3
Для вывода на дисплей векторов со второго по четвертый введем
C{2:4}
Это даст
ans =
1 0 1
ans =
1 2 3 4 5 6 7 8 9 10
ans =
9 8 7
Аналогично, вы можете создать новый числовой массив используя выражение
B = [ C{1}; C{2}; C{4} ]
что приводит к
B =
1 2 3
1 0 1
9 8 7
Вы можете также использовать соответствующую индексацию в левой части оператора при-сваивания для создания нового массива ячеек, где каждая ячейка содержит один выходной аргумент
[D{1:2}] = eig (B)
D =
[3x3 double] [3x3 double]
Напомним, что при задании двух выходных аргументов, выходом функции eig(B)является модальная матрица, составленная из нормированных собственных векторов матрицы Bи ди-агональная матрица собственных значений. Вы можете вывести в командное окно действи-тельные значения собственных векторов и значений вводя D{1}иD{2}.