matlab_7
.pdf
Примеры:
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: []
