И другие программы этой серии
Обратите, однако, внимание на легкость задания размеров массивов для каждой размерности. Кроме того, следует отметить, что если хотя бы одна размерность массива равна нулю, то массив будет пустым:
>> A=randn(3,3,3,0)
A = Empty array: 3-by-3-by-3-by-0
Как видно из данного примера, пустой массив возвращается с соответствующим комментарием.
5.4.7. Объединение многомерных массивов
Для создания многомерных массивов служит описанная ранее для матриц специальная функция конкатенации cat:
• cat(DIM,A,B) возвращает результат объединения двух массивов A и B вдоль размерности DIM;
• cat(2,A,B) возвращает массив [A,B], объединенный по столбцам;
• cat(1,A,B) возвращает массив [A;B], объединенный по строкам;
• B=cat(DIM,A1,A2,…) объединяет множество входных массивов A1, A2,... вдоль размерности DIM.
Функции cat(DIM,C{:}) и cat(DIM,C.FIELD) обеспечивают объединение массива ячеек или массива записей (см. далее), содержащего числовые матрицы, в многомерный массив. Ниже приводятся примеры применения функции cat:
>> M1=[1 2;3 4] M1 =
12
34 >> M2=[5 6;7 8] M2 =
56
78 >> cat(1,M1,M2) ans =
12
34
56
78 >> cat(2,M1,M2) ans =
1256
3478 >> M=cat(3,M1,M2) M(:,:,1) =
12
34 M(:,:,2) =
56
78
5.4.8. Функция преобразования размеров многомерного массива reshape
Еще один путь создания многомерных массивов заключается в преобразовании их размеров. Для этого используется функция reshape в ряде форм записи:
reshape(A,m,n,p,...) reshape(A,[m n p ...]) reshape(A,...,[],...) reshape(A,siz)
К примеру, в первых двух конструкциях эта функция возвращает многомерный массив (размера m×n×p×…), сформированный из элементов массива A.
Рисунок 5.14 показывает пример выполнения функции reshape на примере создания массива размера 6×5 из двух массивов размера 3×5.
M
reshape(M. [6 5])
9
7 8 5 8,
9, .\'\\
S^\'2
-\'5 1 Э 3
1 3 S 6
a s
2 4
0 3
1 0
5
5
6
9
2
Э
4 5 3 7
0 2
*
Рис.
Начало в части 1