Работа с размерностями
Вычисление числа размерностей массива
Функция ndims(A) возвращает размерность массива А (если она больше или равна двум). Но если входной аргумент – массив Java или массив массивов Java, то независимо от размерности массива эта функция вернет 2. Следующий пример иллюстрирует применение функции ndims:
>
>
M
=
rand(
2
:
3
:
4
:
5
):
>
>
ndims(M)
ans
=
4
Вычисление размера размерности массива
Для вычисления размера каждой размерности массива используется функция size:
- М = size(A.DIM) возвращает размер размерности, указанной скаляром DIM, в виде вектора-строки размером 2. Для двумерного или одномерного массива А size(A.l) возвращает число рядов, a size (А, 2) – число столбцов;
Для N-мерных массивов А при n>2 size(A) возвращает N-мерный вектор-строку, отражающий страничную организацию массива, последняя составляющая этого вектора равна N. В векторе отсутствуют данные о единичных размерностях (тех, где расположены вектор-строка или вектор-столбец, т. е .size(A,DIM)==l). Исключение представляют N-мерные массивы Java массивов javaarray, которые возвращают размер массива самого высокого уровня.
Вообще, когда входным аргументом size является javaarray, то возвращаемое число столбцов всегда 1, а число рядов (строк) равно размеру (длине) javarray.
- [M1, М2,М3,…, MN] = size(A) возвращает размер первых N размерностей массива А;
- D = size (А), для mxn матрицы А возвращает двухэлементный вектор-строку, в котором первая составляющая – число строк т, а вторая составляющая – число столбцов n;
- [m.n] = size(A) возвращает число рядов и столбцов в разных выходных параметрах (выходных аргументах в терминологии MATLAB) тип.
Перестановки размерностей массивов
Если представить многомерный массив в виде страниц, то их перестановка является перестановкой размерностей массива. Для двумерного массива перестановка часто означает транспонирование – замену строк столбцами и наоборот. Следующие функции обобщают транспонирование матриц для случая многомерных массивов и обеспечивают перестановку размерностей многомерных массивов:
- permute (A, ORDER) – переставляет размерности массива А в порядке, определяемом вектором перестановок ORDER. Вектор ORDER – одна из возможных перестановок всех целых чисел от 1 до N, где N – размерность массива А;
- ipermute(A, ORDER) – операция, обратная permute: permute(permute(A. ORDER), ORDER)=A
Ниже приводятся примеры применения этих функций и функции size:
>
>
A
=
[
1
2
:
3
4
]:
>
>
B
=
[
5
6
;
7
8
];
>
>
C
=
[
9
10
;
11
12
];
>
>
D
=
cat(
3
.A,B.C)
D(:,:,
1
)
=
1
2
3
4
9
10
11
12
>
>
size(D)
ans
=
2
2
3
>
>
size(permute(D.[
3
2
1
]))
ans
=
3
2
2
>
>
size(ipermute(D.[
2
1
3
]))
ans
=
2
2
3
>
>
ipermute(permute(D,[
3
2
1
]),[
3
2
1
])
1
2
3
4
ans(:.:,
2
)
=
5
6
78
ans(:.:,
3
)
=
9
10
11
12