假设我有一个 1-12 矩阵和我想调整这个 4-通过-3 矩阵。我怎么可能这样做吗?

我目前的解决办法是一种丑陋:

for n = 1:(length(mat)/3)
    out(n,1:3) = mat( ((n-1)*3 + 1):((n-1)*3 + 3) );
end

有没有更好的方式做到这一点?

有帮助吗?

解决方案

reshape当然是正确的解决方案,因为通过所述 @gnovice

reshape的一个很好的特征是,它允许这样:

A = 1:12;
B = reshape(A,4,[]);
B =
     1     5     9
     2     6    10
     3     7    11
     4     8    12

所以,如果你不知道有多少列会有,reshape将计算它。同样,reshape将填补行数,如果你离开了这一点。

C = reshape(A,[],4)
C =
     1     4     7    10
     2     5     8    11
     3     6     9    12

其他提示

尝试重塑功能:

A = (1-by-12 matrix);
B = reshape(A,4,3);

请注意,矩阵的将被填充来自元件的 A 在一个纵列的方式(即,字段将被填充从上到下,从左向右移动)。

示例:

>> A = 1:12;
>> B = reshape(A,4,3)

B =

     1     5     9
     2     6    10
     3     7    11
     4     8    12

延长gnovice的解决方案:

如果你需要一个不同的次序矩阵的建设,使用移调('的操作者)或 permute() 改变维订后你打电话 reshape().

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top