Раздел: Документация
0 ... 137 138 139 140 141 142 143 ... 365 При этом не происходит автоматического изменения структуры transaction: >> transaction,strike.exchange ??? Reference to non-existent field exchange". Для внесения изменений в структуру transaction следует изменить поле strike: » transaction.strike = А; » transaction.strike.exchange ans = 28.5214 Удаление поля осуществляется с помощью функции rmfieid. Удалите, к примеру, поле time » transaction = rmfield(transaction, time ) Если в качестве выходного аргумента rmfieid указать другое имя, то старая структура останется без изменений, а новая будет соответствовать старой с удаленным полем. При обращении к полю структуры его имя можно задавать текстовой строкой в круглых скобках после точки: » transaction.(volume) ans = 10000 Это дает возможность использовать строковую переменную для идентификации поля: >> field =volume; >> transaction.(field) ans = 10000 Возникает вопрос, как по имени структуры узнать названия ее полей и сохранить их в строковых переменных. Для этой цели служит встроенная функция fieldnames: » names = fieldnames(transaction) names = stock volume strike Посмотрите в окне Workspace браузера переменных рабочей среды инфор> мацшо о переменной names. Она представляет собой не массив строк, а от- носится к типу cell array (массив ячеек). Работу с таким типом данных мы рассмотрим далее в этой главе. Заметим сейчас, что для выделения содержимого ячейки из массива следует указать ее номер в фигурных скобках после имени массива ячеек. Например, обращение >? f2 = names(2) f2 - volume приводит к записи содержимого второго элемента массива ячеек names в строковую переменную f2, которую можно теперь использовать для доступа к нужному полю структуры transaction » v = transaction.(f2) Просмотр и редактирование содержимого полей структуры transaction удобно производить в редакторе массивов (Array Editor), который открывается двойным щелчком кнопкой мыши по имени структуры в окне Workspace. При чтении главы 2 вы уже прибегали к редактору массивов для доступа к элементам числовых массивов. Рассмотрим теперь некоторые его возможности для работы со структурами. V = 10000 currency USD bid0.21 ask 0.27 Рис. 8.2. Просмотр вложенной структуры с помощью Array Editor Редактор массивов позволяет обратиться к значениям полей структуры, в том числе и к полю со вложенной структурой strike, при помощи двойного щелчка мыши по названию поля в столбике Field. Содержимое поля открывается в новом окне редактора массивов, причем окно снабжено вкладкой с именем поля (рис. 8.2). Итак, двойной щелчок мышью приводит к отображению содержимого поля. Обычный щелчок по имени поля в столбике Field делает это поле текущим, а повторный щелчок позволяет изменить название поля. Ввод нового имени поля завершается нажатием <Enter> или щелчком мыши по другому полю. Кнопка Up на панели инструментов редактора массивов служит для перехода вверх по уровням вложенности, т. е. при активном окне с содержимым некоторого поля структуры transaction, например, поля strike, нажатие на Up приведет к отображению структуры transaction. Массивы структур и массивы ячеек Обычные массивы удобны при работе с однородными данными — числами или строками. Информация может быть представлена в виде таблицы с полями, содержащими однотипные элементы, в этом случае наилучшим выбором является массив структур. Эффективное оперирование группой данных различных типов позволяет осуществить массивы ячеек, работу с которыми мы рассмотрим чуть позже. Массивы структур Проиллюстрируем использование массивов структур на простом примере. Предположим, что успеваемость группы студентов по шести предметам представлена в табл. 8.1. Таблица 8.1. Успеваемость студентов группы 201
0 ... 137 138 139 140 141 142 143 ... 365
|