Создание структур и доступ к их компонентам
Для задания структур на языке 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, если Х=[ ].