Matlab 重塑矩阵
我有一个矩阵,看起来像这样:Matlab 重塑矩阵,matlab,matrix,reshape,Matlab,Matrix,Reshape,我有一个矩阵,看起来像这样: 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] 我想做的是重塑这个ie 我想要的是将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] 但是我似乎无法操纵重塑函数来
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]
我想做的是重塑这个ie
我想要的是将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]
但是我似乎无法操纵
重塑
函数来为我做这件事编辑:单行版本可能有点复杂,所以我还添加了一个基于for循环的版本
两次重塑和一次置换就可以了(我们先将矩阵拆分并存储在3d中),然后将它们堆叠起来。为了堆叠它们,我们首先需要排列维度(类似于转置)
基于for循环的版本更直接一些。我们创建一个大小正确的空数组,然后分别插入每个2x2矩阵:
b=zeros(8,2);
for i=1:4,
b((2*i-1):(2*i),:) = a(:,(2*i-1):(2*i));
end
循环在Matlab中是邪恶的-他们说。循环确实通常较慢@雷姆斯和兰汀——事实上已经不是这样了。使用JIT编译器,在许多情况下循环(假设预分配)实际上会非常快,有时甚至超过矢量化。
b=zeros(8,2);
for i=1:4,
b((2*i-1):(2*i),:) = a(:,(2*i-1):(2*i));
end