Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
matlab_manual.rtf
Скачиваний:
354
Добавлен:
21.03.2016
Размер:
9.57 Mб
Скачать

Массивы ячеек, содержащие структуры

Для хранения групп структур с различной архитектурой полей можно использовать массивы ячеек

c_str = cell(1,2);

c_str{1}.label = '12/2/94 – 12/5/94';

c_str{1}.obs = [47 52 55 48; 17 22 35 11];

c_str{2}.xdata = [–0.03 0.41 1.98 2.12 17.11];

c_str{2}.ydata = [–3 5 18 0 9];

c_str{2}.zdata = [0.6 0.8 1 2.2 3.4];

Ячейка l массива c_str содержит структуру с двумя полями, где в одном поле хранится стро-ка символов, а во втором - вектор. Ячейка 2 содержит структуру с тремя полями векторов.

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

Cell_array{index}.Field

Например, чтобы получить содержимое поля label структуры в ячейке 1 нужно записать

C_str{1}.Label Многомерные массивы ячеек

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

Например, создадим простой трехмерный массив ячеек С из двух массивов А и В:

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

A{1,2} = 'Name';

A{2,1} = 2 – 4i;

A{2,2} = 7;

B{1,1} = 'Name2';

B{1,2} = 3;

B{2,1} = 0:1:3;

B{2,2} = [4 5]';

C = cat(3,A,B);

Общая структура индексации массива ячеек С имеет вид

Многомерные массивы структур

Многомерные массивы структур явлеются распространением обычных двумерных, то есть плоских структур. Подобно другим типам многомерных массивов, вы можете строить их как прямым присваиванием, так и применением функции cat.

patient(1,1,1).name = 'John Doe';

patient(1,1,1).billing = 127.00;

patient(1,1,1).test = [79 75 73; 180 178 177.5; 220 210 205];

patient(1,2,1).name = 'Ann Lane';

patient(1,2,1).billing = 28.50;

patient(1,2,1).test = [68 70 68; 118 118 119; 172 170 169];

patient(1,1,2).name = 'Al Smith';

patient(1,1,2).billing = 504.70;

patient(1,1,2).test = [80 80 80; 153 153 154; 181 190 182];

patient(1,2,2).name = 'Dora Jones';

patient(1,2,2).billing = 1173.90;

patient(1,2,2).test = [73 73 75; 103 103 102; 201 198 200];

Геометрически данную структуру можно отобразить следующим образом