8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 142 143 144 145 146 147 148 ... 365

Формирование массива строк описано в разд. "Массивы строк" данной главы.

Удобную возможность для получения названия всех полей структуры предоставляет функция fieldnames, входным аргументом которой является массив структур, а выходным — массив ячеек, содержащий строки с названиями полей. Определение названий полей массива структур, запись их в строковые переменные и дальнейшее использование ничем не отличаются от случая простой структуры.

» GRFields = fieldnames(GR201) GRFields =

Family1

Name

Year

Marks

1NBook » f4 = GRFields{4} ti = Marks

» M5 = GR20K5) . <f4) M5 =

5 5 5 5 4 5

Полученные строковые переменные или строки с названием имени поля используются в качестве входных аргументов функций getfield и setfield, которые, соответственно, предназначены для получения и установки значения поля структуры. Примеры вызова getf ield и setfield приведены ниже.

» Namel = getfield(GR201(1), Name);

» GR20K2) = setfield(GR201(2) , Name, "Алексей);

При написании собственных файл-функций для работы со структурами используйте isstruct для проверки, является ли переменная структурой или нет. Входным аргументом isstruct задается переменная, подлежащая проверке, а результатом является либо "истина" (логическая единица), либо "ложь" (логический ноль). Перед обращением к полю полезно убедиться в том, что оно определено в структуре при помощи функции isf ield. Первый входной аргумент isf ield является именем структуры, а второй — строковой переменной с названием поля. Функция isf ield возвращает так же логический ноль или единицу.

Массивы ячеек

Кроме числовых массивов, массивов строк и структур в MATLAB определен еще один тип переменных — массив ячеек, который хорошо приспособ-


лен для хранения раз)юродных данных. В данном разделе приведены основные сведения, касающиеся массивов ячеек, которые понадобятся, в частности, при создании функций с переменным числом аргументов.

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

Заполнение массива ячеек осуществляется поэлементно, причем для доступа к отдельным контейнерам применяется индексация, индексы заключаются в фигурные скобки. Способ присваивания значений определяется типом данных, например, при внесении структуры следует отделить поле от ячейки при помощи точки. Листинг 8.17 содержит файл-программу, заносящую информацию (см. рис. 8.5) в контейнеры массива ячеек exper.

ячейка 1,1]

ячейка 1,2]

ячейка 1,3]

доц. Петров

доц. Гришин

асс-Зинин

ячейка 2,1J

ячейка 2,2]

ячейка 2,2]

2.2 0.3 1.7

вариант N2

2.0 0.2 1.4

ячейка 3, \

ячейка 3,1

ячейка 3,3

Family Иванов Name Алексей Group 201

Family Сергеев Name Антон Group 202

Family Пашин Name Антон Info Вечерн. ф.-т

ячейка 4,1

ячейка 4,2

ячейка 4,3)

-1.33 0.35 1.74 0.99 0.98 0.78

-1.43 0.24 1.88 0.90 0.91 0.59

рез. не получен

Рис. 8.5. Содержимое ячеек


Примечание

Если имя создаваемого массива ячеек занято в рабочей среде под обычный массив, то перед поэлементным заполнением массива ячеек следует удалить его из рабочей среды командой clear или из окна Workspace браузера переменных, иначе MATLAB выдаст сообщение об ошибке.

Листинг 8.17. Заполнение массива ячеек

% ЗАПОЛНЕНИЕ ПЕРВОГО СТОЛБЦА МАССИВА EXPER

i Занесение строки с информацией о преподавателе в ячейку (1, 1) EXPERtl, 1} = доц. Петров Е.А.; % Занесение вектора параметров в ячейку (2, 1) EXPER{2, 1} = [2.2 0.3 1.7];

% Занесение структуры с информацией о студенте в ячейку (3, 1) EXPER( 3, 11.Family - 1Иванов; EXPER(3, 1).Name = Алексей; EXPER13, 1).Group = 201;

% Занесение результатов эксперимента в ячейку (4, 1) EXPERH,!} = [-1.33 0.35 1.74; 0.99 0.98 0.78];

* ЗАПОЛНЕНИЕ ВТОРОГО СТОЛБЦА МАССИВА EXPER

% Занесение строки с информацией о преподавателе в ячейку (1, 2)

EXPER(1, 2} = доц. Гришин СЕ.;

% Занесение вектора параметров в ячейку (2, 2)

EXPER{2, 2) = Вариант N2;

% Занесение структуры с информацией о студенте в ячейку (3, 2) EXPER(3, 2].Family = Сергеев; EXPER13, 2).Name = Антон; EXPER13, 2..Group = 202;

% Занесение результатов эксперимента в ячейку (4, 2) EXPERH, 2} - [-1.43 0.24 1.88; 0.90 0.91 0.59];

% ЗАПОЛНЕНИЕ ТРЕТЬЕГО СТОЛБЦА МАССИВА EXPER

Ъ Занесение строки с информацией о преподавателе в ячейку (1, 3)

EXPERU, 3} = "асе. Зинин К.О.;

% Занесение вектора параметров в ячейку (2, 3)

EXPER{2, 3} = [2.3 0.3 1.5];



0 ... 142 143 144 145 146 147 148 ... 365