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((,,,))=