Создание
структур и доступ к их компонентам
Для задания
структур на языке 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 существует проблема с записью символов кирилли-цы в командном режиме.
Так, в командном режиме нельзя вводить в аргументы структур малую букву «с»
русского алфавита — она ведет к переводу строки. Этого ограничения нет при
задании структур в программах, хотя и в этом случае ошибки при вводе символов
кириллицы не исключены.
Для создания
массива структур вводится их
индексация.
Например, вектор структур можно
создать, введя индекс в скобках после имени структуры. Так, для создания новой,
второй структуры, можно поступить следующим образом:
»mаn(2).namе='Петр';
»mаn(2).Surnamе='Сидоров';
»
man(2).date=1959;
»mаn(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, если Х=[ ].
Содержание раздела