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

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

В результате выполнения команд, приведенных в листинге 8.17. в рабочей среде создается массив ячеек exper. Просмотр содержимого массива exper из командной строки приводит к отображению информации в сжатом виде:

» exper exper =

доц. Петров Е.А.доц. Гришин С.Е.асе. Зинин К.О.

[1x3 double]Вариант N2[1x3 double]

[lxl struct][lxl struct][lxl struct]

[2x3 double][2x3 double][1x20 char ]

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

» celiplot(exper)

приводит к появлению графического окна, изображенного на рис. 8.6. Массивы чисел или текстовые строки обозначаются макетами таблиц с соответствующим числом строк и столбцов, а записи — квадратами. Для наглядности на рис 8.6 текстовая строка "Вариант N2" вынесена над обозначением массива, ее содержащего. В других ячейках текстовые строки не выводятся, поскольку они содержат много символов.

Способ заполнения массива ячеек, описанный выше, является одним из двух возможных в MATLAB. Второй способ состоит в том, что обращение к ячейке происходит при помощи обычной индексации в круглых скобках, а в правой части оператора присваивания помещается ячейка, содержимое которой заключается в фигурные скобки. Например, заполнение ячейки (1,1) массива exper (листинг 8.17) может выглядеть следующим образом:

EXPER(1, 1) = {доц. Петров Е.А.)

Функция size находит размер массива ячеек:

» size(exper) ans =

33

% Занесение структуры с информацией о студенте в ячейку (3, 3) exper(3, 3).Family = Пашин; exper{3, 3}.Name - Антон; exper(3, 3}.lnfo= Вечерн. ф-т;

% Занесение результатов эксперимента в ячейку (4, 3] EXPERH, 3} = рез. не получен;


Рис. 8.6 Схема массива ячеек (celldisp)

Примечание j

Массив ячеек может представлять собой не только матрицу с контейнерами, но и вектор. Для доступа к содержимому контейнеров в этом случае применяется один индекс в фигурных скобках. Функция length возвращает число ячеек

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

>> S = EXPER С 3, 2}

S =

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


» С = EXPER(3, 2) С -

[lxl struct]

В чем же разница? Изучите тип переменных s и с, например, в окне Workspace браузера рабочей среды. Переменная s является структурой (массивом структур размера 1 на 1), а с— ячейкой (массивом ячеек размера 1 на 1). Поэтому для обращения к содержимому элемента массива ячеек следует использовать фигурные скобки, если с ним требуется выполнить дальнейшие операции, определяемые типом содержимого ячейки. Если же необходимо выделить именно ячейку, то следует указать индексы в круглых скобках.

» s.Name

ans =

Антон

Выбирайте нужные скобки, иначе получите сообщение об ошибке

» С.Name

??? Attempt to reference field of non-structure array C.

Напишите файл-функцию students, возвращающую массив строк с именами студентов, участвовавших в выполнении эксперимента. Входным аргументом файл-функции students (листинг 8.18) должен быть массив ячеек, имеющий такую же схему расположения данных, как и exper, только число столбцов может быть произвольным. Структуры с информацией о студентах размещаются в третьей строке массива ячеек. Число столбцов массива структур определите при помощи size. Используйте цикл for для перебора контейнеров со структурами. Строки с фамилиями студентов добавляйте в массив строк при помощи char.

.................................................................. ........................ ....... ,........ ..

[ Листинг 8.18. Файл-функция students, выделяющая фамилии студентов I из массива ячеек

function strmas = students(CELLMAS)

% файл-функция формирует массив строк с фамилиями

% студентов, участвующих в эксперименте.

% Использование strmas = students(cellmas)

% Определение размеров массива ячеек SizeMas - size(CELLMAS);

% Нахождение числа студентов (информация о деятельности % каждого сдудента хранится в столбце) NStudents = SizeMas(2);



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