Algorithm 以行方式重塑MATLAB向量

Algorithm 以行方式重塑MATLAB向量,algorithm,matlab,Algorithm,Matlab,假设我有一个矩阵a=[123456],例如,如何以行方式重塑它 重塑(a,2,3)以屈服 1 2 3 4 5 6 而不是MATLAB生成的默认列式结果: 1 3 5 2 4 6 我相信这是一项微不足道的任务,它可能具有实现这一目标的内在功能。我已经实现了一个函数,它可以完美地实现这一点。。。然而,有没有一种更短、更整洁、更实用的方法?谢谢 function y = reshape2(x, m, n) y = zeros(m, n); ix = 0; for i = 1:

假设我有一个矩阵
a=[123456],例如,如何以行方式重塑它
重塑(a,2,3)
以屈服

1 2 3 
4 5 6
而不是MATLAB生成的默认列式结果:

1 3 5 
2 4 6
我相信这是一项微不足道的任务,它可能具有实现这一目标的内在功能。我已经实现了一个函数,它可以完美地实现这一点。。。然而,有没有一种更短、更整洁、更实用的方法?谢谢

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
这个怎么样


重塑(a,3,2)

以行方式将
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] 
它确实是重塑(A',cols,rows)'


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

为刚才删除你的问题干杯-我刚刚花了10分钟准备了一个答案。我可能对其他人有用。(我认为这是一个好问题)。哦,我会重新发布这个问题,然后@matthewtaylorrth这个解决方案对ND数组失败。考虑一个3D数组2x3x4<代码> a=(1:2* 3×4)< /代码>此解决方案对于ND数组失败。考虑一个3D数组2x3x4<代码> a=[1:2* 3×4 ] < /代码>如下所示,<代码> b(:,,1)=1 2 3 4 5 6 7 8 8 9 8 b((,,,))=