如何在MATLAB中调整matrix?
假设我有一个1×12的matrix,我想把它调整到一个4×3的matrix。 我怎么能这样做?
我目前的解决方法是丑陋的:
for n = 1:(length(mat)/3) out(n,1:3) = mat( ((n-1)*3 + 1):((n-1)*3 + 3) ); end
有没有更好的方法来做到这一点?
正如@gnovice所述, reshape
当然是正确的解决scheme。
reshape
一个很好的特点是它允许这样做:
A = 1:12; B = reshape(A,4,[]); B = 1 5 9 2 6 10 3 7 11 4 8 12
所以如果你不知道会有多less列, reshape
将会为你计算。 同样, reshape
将填充行数,如果你离开了。
C = reshape(A,[],4) C = 1 4 7 10 2 5 8 11 3 6 9 12
尝试RESHAPEfunction:
A = (1-by-12 matrix); B = reshape(A,4,3);
请注意,matrixB将以列方式填充来自A的元素(即,列将从上到下填充,从左向右移动)。
例:
>> A = 1:12; >> B = reshape(A,4,3) B = 1 5 9 2 6 10 3 7 11 4 8 12
扩展gnovice的解决scheme:
如果您需要不同的matrix构造顺序,请在调用reshape()
后使用转置(“运算符”)或permute()
来更改维度sorting。