Доступ к данным в массиве ячеек

В этом примере показано, как считать и записать данные в и из массива ячеек.

Создайте массив ячеек 2 на 3 с текстом и числовыми данными.

C = {'one', 'two', 'three'; 
     1, 2, 3}
C=2×3 cell array
    {'one'}    {'two'}    {'three'}
    {[  1]}    {[  2]}    {[    3]}

Существует два способа обращения к элементам массива ячеек. Стройте индексы в сглаженных круглых скобках, (), для обращения к наборам камер --для примера, для определения подмножества массива. Индексы заключаются в фигурные скобки, {}, для ссылки на текст, числа или другие данные в отдельных камерах.

Индексация камер сглаженными круглыми скобками, ()

Индексы массива ячеек в гладких круглых скобках относятся к наборам камер. Например, чтобы создать массив ячеек 2 на 2, который является подмножеством C, используйте гладкие круглые скобки.

upperLeft = C(1:2,1:2)
upperLeft=2×2 cell array
    {'one'}    {'two'}
    {[  1]}    {[  2]}

Обновляйте наборы камер путем замены их таким же количеством камер. Для примера замените камеры в первой строке C с массивом ячеек эквивалентного размера (1 на 3).

C(1,1:3) = {'first','second','third'}
C=2×3 cell array
    {'first'}    {'second'}    {'third'}
    {[    1]}    {[     2]}    {[    3]}

Если камеры в вашем массиве содержат числовые данные, можно преобразовать камеры в числовые с помощью cell2mat функция.

numericCells = C(2,1:3)
numericCells=1×3 cell array
    {[1]}    {[2]}    {[3]}

numericVector = cell2mat(numericCells)
numericVector = 1×3

     1     2     3

numericCells является массивом ячеек 1 на 3, но numericVector массив типа 1 на 3 double.

индексация данных списка фигурными скобками, {}

Доступ содержимое камер - чисел, текста, или других данных в камерах - внося в указатель с фигурными скобками. Например, для доступа к содержимому последней камеры C, использовать фигурные скобки.

last = C{2,3}
last = 3

last является числовой переменной типа double, потому что камера содержит double значение.

Точно так же можно индексировать фигурными скобками, чтобы заменить содержимое камеры.

C{2,3} = 300
C=2×3 cell array
    {'first'}    {'second'}    {'third'}
    {[    1]}    {[     2]}    {[  300]}

Получить доступ к содержимому нескольких камер можно путем индексации фигурными скобками. MATLAB ® возвращает содержимое камер в виде списка, разделенного запятыми. Поскольку каждая камера может содержать другой тип данных, вы не можете назначить этот список одной переменной. Однако список можно назначить тому же количеству переменных, что и камеры. MATLAB ® присваивает переменным в порядке столбцов.

Присвоение содержимого четырёх камер C в четыре переменные.

[r1c1, r2c1, r1c2, r2c2] = C{1:2,1:2}
r1c1 = 
'first'
r2c1 = 1
r1c2 = 
'second'
r2c2 = 2

Если каждая камера содержит один и тот же тип данных, можно создать одну переменную, применив оператор конкатенации массива [], в разделенный списками , разделенными запятыми.

Объедините содержимое второй строки в числовой массив.

nums = [C{2,:}]
nums = 1×3

     1     2   300

См. также

|

Похожие темы