以行方式重塑MATLAB向量

时间:2013-05-16 16:05:28

标签: algorithm matlab

假设我有一个矩阵a = [1 2 3 4 5 6];,我如何以行方式重塑它,例如 产生reshape(a, 2, 3)

1 2 3 
4 5 6

而不是MATLAB生成的默认列式结果:

1 3 5 
2 4 6

我认为这是一项微不足道的任务,可能有一个内置功能来实现这一目标。我已经实现了一个完美的功能......然而,是否有更短,更整洁,更多的MATLAB方式?感谢。

function y = reshape2(x, m, n) 
  y = zeros(m, n);

  ix = 0; 
  for i = 1:m
     for j = 1:n
         ix = ix + 1;
         y(i, j) = x(ix);
     end 
  end 
end

3 个答案:

答案 0 :(得分:22)

这个怎么样?

reshape(a, 3, 2)'

答案 1 :(得分:3)

以行方式将m*n矩阵A重新整形为p*k矩阵B的一般方法是:

c=reshape(A',1,m*n) 
B=reshape(c,k,p)' 
example: m=3 n=4 , p=6, q=2
A=[1 2 3 4; 5 6 7 8; 9 10 11 12] 
c=[1 2 3 4 5 6 7 8 9 10 11 12] 
B=[1 2 ; 3 4; 5 6; 7 8; 9 10; 11 12] 

答案 2 :(得分:1)

确实是重塑(A',cols,rows)'

(在你的例子中重塑(a',3,2)')