exponenta event banner

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

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

Создайте массив ячеек 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

См. также

|

Связанные темы