Сдвиг размерностей реализуется функцией shiftdim:
· B=shiftdim(X,N) — сдвиг размерностей в массиве X на величину N. Если М>0, то сдвиг размерностей, расположенных справа, выполняется влево, а N первых слева размерностей сворачиваются в конец массива, т. е. движение размерностей идет по кругу против часовой стрелки. Если М<0, сдвиг выполняется вправо, причем N первых размерностей, сдвинутых вправо, замещаются единичными размерностями;
· [B,NSHIFTS]=shiftdim(X) — возвращает массив В с тем же числом элементов, что и у массива X, но с удаленными начальными единичными размерностями. Выходной параметр NSHIFTS показывает число удаленных размерностей. Если X — скаляр, функция не изменяет X , В, NSHIFTS.
Следующий пример иллюстрирует применение функции shiftdim:
» A=randn(1,2,3,4);
» [B,N]=shiftdim(A)
B(:.:.1) =
-2.1707-1.01060.5077
-0.05920.6145 1.6924
B(:.:,2) =
0.5913 0.3803 -0.0195
-0.6436-1.0091-0.0482
B(:.:.3) =
0.0000 1.0950 0.4282
-0.3179-1.87400.8956
В(:.:,4) =
0.7310 0.0403 0.5689
0.5779 0.6771 -0.2556
N =
Удаление единичных размерностей
Функция squeeze(A) возвращает массив, в котором удалены все единичные размерности. Единичной называется размерность, в которой size(A. dim) == 1. Но если
А — одномерный или двумерный массив (матрица или вектор), то функция вернет тот же самый массив А. Следующий пример поясняет работу squeeze:
» A=randn(1.2.1.3.1);
» B=squeeze(A)
В=
0.6145 1.6924 -0.6436
0.5077 0.5913 0.3803
Обратите внимание на то, что пятимерный массив А превращается в массив с размерностью 2 и размером 2x3.