Раздел: Документация
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
|