MATLAB中的数组旋转

Fra*_*ank 4 arrays matlab rotation

在MATLAB中,有没有办法将数组的元素旋转到另一个维度,如:

y=[-1,0,1] -->  y=[-1; 0; 1] (like transpose)

y=[-1,0,1] -->  y(:,:,1)=-1, y(:,:,2)=0, y(:,:,3)=1 

y=[-1,0,1] -->  y(:,:,1,1)=-1, y(:,:,1,2)=0, y(:,:,1,3)=1
Run Code Online (Sandbox Code Playgroud)

我想避免循环.

gno*_*ice 5

您可以使用转置,函数RESHAPE或函数PERMUTE执行这些类型的矩阵运算.例如:

y = [-1 0 1];               %# Your 1-by-3 sample array

y2 = y.';                  %'# Transposing y gives you a 3-by-1 array
y2 = reshape(y,[3 1]);      %# This also gives you a 3-by-1 array
y2 = permute(y,[2 1]);      %# This also gives you a 3-by-1 array

y3 = reshape(y,[1 1 3]);    %# This gives you a 1-by-1-by-3 array
y3 = permute(y,[3 1 2]);    %# This also gives you a 1-by-1-by-3 array

y4 = reshape(y,[1 1 1 3]);  %# This gives you a 1-by-1-by-1-by-3 array
y4 = permute(y,[4 1 2 3]);  %# This also gives you a 1-by-1-by-1-by-3 array
Run Code Online (Sandbox Code Playgroud)