<< ПредыдущаяОглавлениеСледующая >>


1.7. Структуры в MatLab

При разработке программ важным является выбор эффективного способа представления данных. Во многих случаях недостаточно объявить простую переменную или массив, а нужна более гибкая форма представления данных. Таким элементом может быть структура, которая позволяет включать в себя разные типы данных и даже другие структуры. Структуры задаются следующим образом:

S = struct('field1',VALUES1,'field2',VALUES2,...);

где field1 – название первого поля структуры; VALUES1 – переменная первого поля структуры, и т.д.

Приведем пример, в котором использование структуры позволяет эффективно представить данные. Таким примером будет инвентарный перечень книг, в котором для каждой книги необходимо указывать ее наименование, автора и год издания. Причем количество книг может быть разным, но будем полгать, что не более 100. Для хранения информации об одной книге будем использовать структуру, которая задается в MatLab с помощью ключевого слова struct следующим образом:

S = struct('title','','author','','year',0);

В итоге задается структура с тремя полями: title, author и year. Каждое поле имеет свой тип данных и значение.

Для того, чтобы записать в эту структуру конкретные значения используется оператор ‘.’ (точка) для доступа к тому или иному полю структуры:

S.title = 'Евгений Онегин';
S.author = 'Пушкин';
S.year = 2000;

и таким образом, переменная S хранит информацию о выбранной книге.

Однако по условиям задачи необходимо осуществлять запись не по одной, а по 100 книгам. В этом случае целесообразно использовать вектор структур  lib, который можно задать следующим образом:

lib(100,1) = struct('title','','author','','year',0);

и записывать информацию о книгах так:

lib(1).title = 'Евгений Онегин';
lib(1).author = 'Пушкин';
lib(1).year = 2000;

Данный пример показывает удобство хранения информации по книгам. Графически массив структур можно представить в виде таблицы, в которой роль столбцов играют поля, а роль строк элементы массива структур (рис. 1.1).

При работе со структурами полезными являются следующие функции:

isstruct( S ) – возвращает истину, если аргумент структура
isfield( S, 'name') – возвращает истину, если имеется такое поле
fieldnames( S ) – возвращает массив строк с именами всех полей

которые позволяют программно определить всю необходимую информацию о той или иной структуре и корректно выполнять обработку ее полей.

 

название

автор

год издания

lib[1]

lib[1].title

lib[1].author

lib[1].year

 

 

 

 

lib[2]

lib[2].title

lib[2].author

lib[2].year

 

 

 

 

lib[3]

lib[3].title

lib[3].author

lib[3].year

 

 

 

lib[100]

lib[100].title

lib[100].author

lib[100].year

Рис. 1.1. Графическое представление массива структур хранения информации по 100 книгам

 



<< ПредыдущаяОглавлениеСледующая >>