Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основные понятия среды MATLAB.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
1.79 Mб
Скачать

2.7 Тип данных ячейка (сell)

Ячейки также как и структуры могут содержать разные типы данных, объединенные одной переменной, но в отличие от вектора структур, вектор ячеек может менять тип данных в каждом элементе. Тип ячейка позволяет обрабатывать структуру подобно массиву, т. е. доступ к элементу ячейки осуществляется по его номеру. Таким образом, вектор ячеек является универсальным хранилищем – его элементы могут содержать любые типы и структуры данных, с которыми работает MATLAB – векторы чисел любой размерности, строки, векторы структур и другие (вложенные) векторы ячеек. Этот тип данных значительно упрощает работу с базами данных и удобен в тех случаях, когда заранее тип какого-либа элемента неизвестен.

Методы создания ячеек похожи на методы создания структур. Как и в случае структур, ячейка может быть создана либо путём последовательного присваивания значений отдельным элементам массива, либо созданы целиком при помощи специальной функции cell(). Однако в любом случае важно различать ячейку и её содержимое. Ячейка – это содержимое плюс некоторая оболочка (служебная структура данных) вокруг этого содержимого, позволяющая хранить в ячейке произвольные типы данных любого размера.

Синтаксис

  • c = cell(m[, n, p,... ]) или c = cell([m [n p ...]]) – создание ячейки размерности m[, n, p,... ] соответственно (m, n, p – целые числа);

  • c = cell(size(A)) – создание ячейки размерности, что и массив А;

  • c = num2cell(A) – преобразует числовой массив A в ячейку C;

  • c = num2cell(A, [dim1, dim2, ...]) – преобразует числовой массив A в массив ячеек размерности [dim1, dim2, ...].

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

Пример.

  1. Создания вектора ячеек хранения разных типов данных.

>> Building = struct('street','','building_number','','project', '','floors',5);

>> MyCell(1)={'Building'};

>> MyCell(2)={'Питерская'};

>> MyCell(3)= {'3А'};

>> MyCell(4)={'1.400-15'};

>> MyCell(5)={5};

Можно задать значения ячейкам и другим способом, например, чтобы записать в ячейку с номером 1 значение Building, использовать следующий код:

>> MyCell{1}='Building';

  1. >> MyCell{2} % обращение к ячейке с номером 2

ans =

street: 'Питерская'

building_number: '3А'

project: '1.400-15'

floors: 5

  1. >> MyCell(1) % если используются круглые скобки, то будет возвращена структура данных [1x1 struct].

  2. Создание массива ячеек размерности 2х2 со сложными полями

>> A = {[1 4 3; 0 5 8; 7 2 9], 'Площадь помещения'; 3-6.5i, -pi:pi/4:pi};

Структура полученного массива ячеек представлена на рис. 1.8.

Рис. 1.8 Структура ячейки А (пример 4)

  1. >> MyCellArray = cell(2, 2); % создание пустой ячейки

% размерности 2х2

MyCellArray = [] []

[] []

Для просмотра содержимого ячейки используется специальная функция celldisp().

Синтаксис

  • celldisp(C) – вывод на экран содержимого ячейки С

  • celldisp(C, name) – вывод на экран содержимого ячейки С с использованием имени name.

Пример.

  1. >> celldisp(MyCell)

MyCell{1} =Building

MyCell{2} =Питерская

MyCell{3} =3А

MyCell{4} =1.400-15

MyCell{5} = 5

  1. >> celldisp(MyCell, 'МyHouse')

МyHouse.MyCell{1} =Building

МyHouse.MyCell{2} =Питерская

МyHouse.MyCell{3} =3А

МyHouse.MyCell{4} =1.400-15

МyHouse.MyCell{5} = 5

Чтобы определить структуру ячейки, используют специальную функцию cellplot(). Функция

Синтаксис

cellplot(c) – выводит в окно figure графическое представление структуры ячейки;

handles = cellplot(c) – выводит в окно figure графическое представление структуры ячейки и возвращает вектор внешних указателей.

Пример.

>> A = {[1 4 3; 0 5 8; 7 2 9], 'Площадь помещения'; 3-6.5i, -pi:pi/4:pi};

>> cellplot(A) % вывод в окно figure графическое представление структуры ячейки (рис. 1.8)

Рис. 1.8 Результат выполнения функции cellplot()

При инициализации значений ячейки можно использовать команду множественного присвоения deal.

Синтаксис.

  • [X{:}]=deal(A. FIELD) – копирует поля FIELD структуры А в массив ячеек X. Если X не существует, то используется конструкция:

  • [X{1:M}]=deal (A.FIELD);

  • [A,B,C,...]=deal(X{:}) – копирует содержимое массива ячеек X в отдельные переменные А, В, С,....