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

 

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

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