Работа с размерностями
Вычисление числа размерностей массива
Функция 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 23 49 1011 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 23 4ans(:.:,2) =5 678ans(:.:,3) =9 1011 12