Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Создание массива структур с использованием функции struct



Вы можете заранее создать массив структур применив функцию struct. Ее основная форма имеет вид

 

str_array = struct ('поле1',знач1,'поле2',знач2, ...)

 

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

 

Вы можете использовать различные методы для задания массива структур. Эти методы отличаются способом инициализации полей структуры. В качестве примера расмотрим зада-ние структуры размера 1х3 с именем weather (погода), имеющую поля temp (температура)

и rainfall (дождевые осадки). Три различные способа задания такой структуры даны в приведенной ниже таблице.

 

 

Метод Синтаксис Задание
Функция struct weather(3) = struct('temp',72,'rainfall',0.0); Структура weather(3)инициализируется с указан-ными значениями полей. По-ля остальных двух структур в массиве, weather(1) и weather(2),содержат в качес-тве данных пустые матрицы.
Сочетание функций struct и repmat weather = repmat (struct ('temp', 72, 'rainfall', 0.0), 1, 3); Все структуры в массиве weatherинициализируются с использованием одинаковых значений одноименных полей.
Функция structс использованием синтаксиса ячеек weather = struct ('temp',{68, 80, 72}, 'rainfall', {0.2,0.4,0.0} ); Структуры в массивеweatherинициализируются с разными значениями полей, заданных массивом ячеек.

Обращение к данным в массивах структур.

Используя индексацию массива структур, можно осуществить обращение к данным любого поля или любого элемента поля в массиве структуры. Аналогичным образом, вы можете за-дать значение любого поля или элемента поля структуры. В качестве примера, используемо-го в данном разделе, рассмотрим структуру, представленную на приведенном ниже рисунке.

 

 

Вы можете обратиться к подмассивам путем дабавления стандартной индексации к имени массива структур. Например, следующая запись приводит к структуре размера 1х2

 

mypatients = patient(1:2)

1x2 struct array with fields:

Name

Billing

Test

 

Первая структура в массиве mypatients совпадает с первой структурой в массиве patient:

 

Mypatients(1)

ans =

name: 'John Doe'

Billing: 127

test: [3x3 double].

 

Для обращения к полю определенной структуры, нужно добавить точку (.) после имени стру-ктуры, с указанием далее имени поля:

 

str = patient(2) . name

str =

Ann Lane

 

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

test2b = patient(3).test(2,2)

test2b =

 

Аналогичную форму записи следует использовать и для задания значений переменных внутри поля, например,

 

patient(3).test(2,2) = 7

Вы можете также одновременно извлечь данные одноименных полей многомерной структу-ры. Например, запись ниже создает вектор 1х3, содержащий все значения счетов полей billing fields.

 

bills = [patient.billing]

bills =

127.0000 28.5000 504.7000

 

Аналогично, вы можете создать массив ячеек, содержащий данные температур test для пер-вых двух структур.

 

tests = {patient(1:2).test}

tests =

[3x3 double] [3x3 double]

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.