我有一个看起来像这样的矩阵:
a=[1 1 2 2 3 3 4 4;
1.5 1.5 2.5 2.5 3.5 3.5 4.5 4.5]
我想做的是重塑这一点。
我想要的是将2x2
矩阵彼此相邻并将它们放在彼此之下。
所以得到:
b=[1 1;
1.5 1.5;
2 2;
2.5 2.5;
3 3;
3.5 3.5;
4 4;
4.5 4.5]
但我似乎无法操纵reshape
函数来为我执行此操作
答案 0 :(得分:2)
编辑:单行版本可能有点复杂,所以我还根据for循环添加了一个
2个重塑和一个permute应该这样做(我们首先拆分矩阵并将它们存储在3d中),然后堆叠它们。为了堆叠它们,我们首先需要置换尺寸(类似于转置)。
>> reshape(permute(reshape(a,2,2,4),[1 3 2]),8,2)
ans =
1.0000 1.0000
1.5000 1.5000
2.0000 2.0000
2.5000 2.5000
3.0000 3.0000
3.5000 3.5000
4.0000 4.0000
4.5000 4.5000
基于for循环的版本更直接。我们创建一个正确大小的空数组,然后分别插入每个2x2矩阵:
b=zeros(8,2);
for i=1:4,
b((2*i-1):(2*i),:) = a(:,(2*i-1):(2*i));
end