Структуры в 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 книгам


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: