如何在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。