И другие программы этой серии
Элементы вектора перестановок – числа от 1 до N, где N – размерность массива;
• ipermute(A,ORDER) делает то же, но в обратном порядке.
Ниже приводятся примеры применения этих функций:
>> A=[1 2; 3 4]; >> B=[5 6; 7 8]; >> C=[9 10;11 12]; >> D=cat(3,A,B,C) D(:,:,1) =
12
34 D(:,:,2) =
56
78 D(:,:,3) =
9 10
11 12
>> size(D) ans =
223 >> size(permute(D,[3 2 1])) ans =
322 >> size(ipermute(D,[2 1 3])) ans =
223
5.5.3. Сдвиг размерностей массивов
Сдвиг размерностей реализуется функцией shiftdim:
• B=shiftdim(X,N) – сдвиг размерностей в массиве X на величину N. Если N>0, то сдвиг выполняется влево по кругу. Если N<0, сдвиг выполняется вправо, причем N первых размерностей становятся единичными;
• [B,NSHIFTS]=shiftdim(X) возвращает массив B с тем же числом элементов, что и у массива X, но с удаленными ведущими единичными размерностями. Выходной параметр NSHIFTS показывает число удаленных размерностей. Если X – скаляр, функция ничего не возвращает.
Следующий пример иллюстрирует применение функции shiftdim: >> A=randn(1,2,3,4);
>> [В,N]=shiftdim(А)
В (:,:,1) =
-2.1707
-1.0106
0.5077
-0.0592
0.6145
1.6924
В (:,:,2) =
0.5913
0.3803
-0.0195
-0.6436
-1.0091
-0.0482
В (:,:,3) =
0.0000
1.0950
0.4282
-0.3179
-1.8740
0.8956
В (:,:,4) =
264
Типы данных – массивы специального вида
Тип данных – структуры
265
0.7310 0.5779
0.0403 0.6771
0.5689 -0.2556
N =
5.5.4. Удаление единичных размерностей
Функция squeeze(A) возвращает массив, в котором удалены все единичные размерности. Единичной называется размерность, в которой size(A, dim)==1. Но если A – одномерный или двумерный массив (матрица или вектор), то функция вернет тот же самый массив A.
Начало в части 1