2015-04-20 2 views
3

Можно ли преобразовать двумерный вектор в четырехмерный вектор в матрице?Преобразование двухмерного вектора в четырехмерный вектор в Matlab

я мог бы создать 2-D векторов, как, например:

A = [[1 2];[3 4]] -->(code segment_1) 

и векторы 4-D как

A = ones(2,3,4,8) -->(code segment_2) 

Можно ли создать 4-D вектор, как, как мы могли бы создать 2-D вектор с помощью code_segment_1? (Позвольте мне пояснить, A=[[[1 2],[3 4]],[[5 6],[7 8]],[[9 10],[11 12]]] создает вместо этого матрицу 1x12)

Также я увидел, что мы использовали функцию reshape для преобразования k-мерной матрицы в l-мерную матрицу, где k> l. Это, в основном, масштабирование, но можем ли мы масштабировать размеры?

+0

Вы должны использовать 'A (:, :,:, k) 'нотация или изменение формы ввода 1D или' 2D' в '4D'. – Divakar

+3

'reshape' также может быть« высококлассным ». Просто подайте его с соответствующими размерами. –

ответ

3

Вы можете reshape ваш 2D матрицу в массив 4D, до тех пор, пока вы не изменить количество элементов:

oneD = 1:12; %// creare 1D vector 
twoD = reshape(oneD, [6 2]); %// reshape into a 2D matrix 
threeD = reshape(oneD, [2 3 2]); %// now you have a 3D array 
fourD = reshape(oneD, [1 2 3 2]); %// 4D with a leading singleton dimension 

Из Вашего вопроса, кажется, что у вас есть некоторый опыт работы с NumPy. Matlab не имеет прямого создания в командной строке массивов n-d для n> 2, но прямолинейно вносит reshape любую двумерную или трехмерную матрицу в более крупную.

+2

Большое спасибо за то, что помогли мне решить мои глупые сомнения. Также я использовал модуль numpy, когда я реализовал ранжирование страницы игрушек .. –

1

Если вы хотите непосредственно создать массив 4D (без reshape) вам нужно использовать немного более громоздкий синтаксис, с cat функции:

A = cat(4, cat(3, [1 2],[3 4]), cat(3, [5 6],[7 8]), cat(3, [9 10],[11 12])); 
Смежные вопросы