将多D数组转换为向量Matlab

时间:2014-10-30 05:16:57

标签: performance matlab indexing

提前感谢您的帮助

假设我有一个多D数组,那么

x(:,:,1) = [1 2 ; 3 4];
x(:,:,2) = [5 6 ; 7 8];
x(:,:,3) = [9 10 ; 11 12];

我希望快速有效地将x转换为

y = [1 5 9 2 6 10 3 7 11 4 8 12];

除了使用循环之外,我还有一种有效的方法(我希望这样做的矩阵相对较大)?

1 个答案:

答案 0 :(得分:2)

您可以使用冒号运算符:,但首先必须重新排序矩阵x

x(:,:,1) = [1 2 ; 3 4];
x(:,:,2) = [5 6 ; 7 8];
x(:,:,3) = [9 10 ; 11 12];
z=permute(x,[3 2 1]);
y=z(:).'