|
|
|||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||
| Вход | |||||||||||||||||||||||||||||||||
|
Раздел "MATLAB\MATLAB"
В.Г.Потемкин "Введение в Matlab" (v 5.3) В оглавление книги \ К следующему разделу \ К предыдущему разделу \ Предметный указатель 6.2. Доступ к полям и данным структуры Используя индексацию, можно легко определить значение любого поля или элемента структуры. Точно также можно присвоить значение любому полю или элементу поля. В качестве примера рассмотрим структуру patient вида:
Рис. 6.2 Чтобы обратиться к некоторому полю, необходимо ввести точку (.) после имени структуры, за которым должно следовать имя поля: str = patient(2).name Чтобы обратиться к элементам поля, надо использовать индексацию поля в правой части оператора присваивания. Другими словами, если поле является числовым массивом, использовать индексы массива; если поле - массив ячеек, использовать индексы массива ячеек и т. п. Пример. n = patient(2).test(2, 2) Используя тот же подход, можно присваивать значения элементам поля в левой части оператора присваивания. Пример. patient(3).test(2, 2) = 167; Получить значение некоторого поля для всех записей структуры нельзя; это можно сделать только для отдельной записи. Пример. for i = 1 : length(patient) Чтобы получить доступ к записи, необходимо индексировать имя структуры. Пример. B = patient(2). Функции setfield и getfield. Непосредственная индексация - это, как правило, наиболее эффективный способ определить или присвоить значение полю записи. Однако, если использовалась функция fieldnames и известно имя поля, то можно воспользоваться функциями setfield и getfield. Функция getfield позволяет определить значение поля или элемента поля: f = getfield(array, {array_index}, 'field', {field_index}) где аргументы array_index и field_index задают индексы для структуры и поля; они не являются обязательными для структуры размера 1х1. Результат применения функции getfield соответствует элементу следующей структуры f = array(array_index).field(field_index); Пример. str = getfield(patient, {2}, 'name') По аналогии функция setfield позволяет присваивать значения полям, используя обращение следующего вида f = setfield(array, {array_index}, 'field', {field_index}, value) Применение функции size. Функция size позволяет получить размер массива записей (структуры) или любого ее поля. Задавая в качестве аргумента имя структуры, функция size возвращает ее размеры. При задании аргумента в форме array(n).field функция size возвращает размеры поля. Пример: size(patient) для структуры patient размера 1х3 возвращает вектор ans = 1 3 Обращение ize(patient(2).name) возвращает размер поля name для записи patient(2) ans = 1 8 Добавление полей. Для того чтобы добавить новое поле к структуре, достаточно добавить поле к единственной записи. Пример. patient(2).pin = '125-33-5555'; Теперь поле patient(2).pin имеет присвоенное значение и каждая запись включает поле pin. Этим полям соответствуют пустые массивы до тех пор, пока им не будут присвоены конкретные значения. Удаление полей. Для удаления поля из структуры предназначена функция rmfield, которая имеет следующий синтаксис struc2 = rmfield(array, 'field'), где array - имя структуры, а 'field' - имя поля, которое подлежит удалению. Для удаления поля name в структуре patient надо использовать оператор patient = rmfield(patient, 'name'); В оглавление книги \ К следующему разделу \ К предыдущему разделу \ Предметный указатель
|
|
Всероссийская научная конференция "Проектирование научных и инженерных приложений в среде MATLAB" (май 2002 г.)
|
||
| На первую страницу \ Сотрудничество \ MathWorks \ SoftLine \ Exponenta.ru \ Exponenta Pro | ||
| E-mail: | ||
| Информация на сайте была обновлена 11.05.2004 |
Copyright 2001-2004 SoftLine Co Наши баннеры |
|