Иллюстрированный самоучитель по MatLab

Создание структур и доступ к их компонентам

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

>> man.name='Иван';
>> man.surname='Петров':
>> man.date=1956;
>> man.height=170.5;
>> man.weight=70.34;

Здесь построена базовая структура без индексного указателя. Теперь можно просмотреть полученную структуру, просто указав ее имя:

>> man
man =
name: 'Иван'
surname: 'Петров'
date: 1956
height: 170.5000
weight: 70.3400

Нетрудно догадаться, что компоненты структуры можно вызывать по имени и менять их значения. При этом имя компонента состоит из имени структуры и имени поля, разделенных точкой. Это поясняют следующие примеры:

>> man.date
ans =
1956
>> man.date=1964
man =
name: 'Иван'
surname: 'Петров'
date: 1964
height: 170.5000
weight: 70.3400

Примечание
Как уже отмечалось, в MATLAB 6.0 существует проблема с записью символов кириллицы в командном режиме. Так, в командном режиме нельзя вводить в аргументы структур малую букву "с" русского алфавита – она ведет к переводу строки. Этого ограничения нет при задании структур в программах, хотя и в этом случае ошибки при вводе символов кириллицы не исключены
.

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

>> man(2).name='Петр';
>> man(2).Surname='Сидоров';
>> man(2).date=1959;
>> man(2)
ans =
name: 'Петр'
surname: 'Сидоров'
date: 1959
height: [ ]
weight: [ ]
>> man(2).surname
ans =
Сидоров
>> length(man)
ans =.2

Обратите внимание на то, что не все поля данной структуры заполнены. Поэтому значением двух последних полей структуры 2 оказываются пустые массивы. Число структур в массиве структур позволяет найти функция length (см. последний пример). Эта же функция может использоваться и для нахождения размера любого вектора или размерности многомерного непустого массива, так как length(Х)= MAX(size(X)), если X – непустой массив, и length(X)=0, если Х=[ ].

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.