Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

matlab_7

.pdf
Скачиваний:
16
Добавлен:
27.05.2015
Размер:
248 Кб
Скачать

Примеры:

ndims(M) — возвращает число размерностей М

size(M) — возвращает массив с размерами всех измерений М

permute(A, ORDER) — переставляет размерности массива A в порядке, определяемом вектором перестановок ORDER (аналог транспонирования обычной матрицы для ММ) ipermute(A,ORDER) делает то же, но в обратном порядке

B=shiftdim(X,N) – сдвиг размерностей в массиве X на величину N. Если N>0, то сдвиг выполняется влево по кругу. Если N<0, сдвиг выполняется вправо, причем N первых размерностей становятся единичными

Структуры относятся к сложным типам данных. В предшествующих версиях MATLAB они назывались записями, что приводило к неточностям в терминологии системы MATLAB и баз данных. После того как в MATLAB были включены средства создания баз данных, этот тип данных стал именоваться структурами (structures). Они (как, например, структуры в С\С++) могут содержать разнородные данные, относящиеся к некоторому именованному объекту. Поле структуры может содержать другую вложенную структуру или массив структур. Это позволяет создавать вложенные структуры и даже многомерные массивы структур.

Для задания структур на языке 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

Для создания массива структур вводится их индексация. Например:

>>man(2).name='Федор';

>>man(2).surname='Павлов';

>>man(2).date=1959;

>>man(2)

ans =

name: 'Федор' surname: 'Павлов' date: 1959 height: [ ] Weight: [ ]

Т.к. не все поля данной структуры заполнены, то значением двух последних компонентов структуры 2 оказываются пустые массивы.

Для опосредованного создания структур используется функция struct:

struct('field1', VALUES1, 'field2', VALUES2,…) возвращает со зданную данной функцией структуру, содержащую указанные в параметрах поля 'fieldn' с их значениями 'VALUESn'. Значением может быть массив ячеек.

struct(OBJ) конвертирует объект OBJ в эквивалентную структуру или массив структур. OBJ может быть объектом или массивом Java.

Для возврата содержимого поля структуры S служит функция getfield:

getfield(S, 'field') возвращает содержимое поля структуры S, чтоэквивалентно S.field;

getfield(S,{i,j},'field',{k}) эквивалентно F=S(i,j).field(k).

Пример:

>> getfield(man(2), 'name') ans = Федор

Для присваивания полям заданных значений используется функция setfield:

setfield(S,'field',V) возвращает структуру S с присвоением полю 'field' значения V, что эквивалентно S.field=V;

setfield(S,{i,j},'field',{k},V) эквивалентно S(i,j).field(k)=V

Пример:

>> setfield(man(2), 'name', 'Владимир') ans =

name: 'Владимир' surname: 'Павлов' date: 1959 height: [ ] weight: [ ]

Для удаления полей структуры можно использовать функцию rmfield:

rmfield(S,'field') возвращает структуру S с удаленным полем 'field'.S;

rmfield(S,FIELDS) возвращает структуру S с несколькими удаленными полями. Список удаляемых полей FIELDS задается в виде массива символов или строкового массива ячеек.

Пример:

>> rmfield(man(2),'surname') ans =

name: 'Ïåòð' date: 1959 height: [] weight: []