我喜欢在不使用循环的情况下在MATLAB中合并两个不同维度的矩阵,因为我已经用循环完成了它.
下图显示了我想要实现的目标.
我也试过这个链接,但这不是我想要的:在Matlab中合并两个不同维度的矩阵?
这是我尝试使用循环:
A=zeros(2,9)-1; B=ones(6,3); disp(A); disp(B); C=zeros(max(size(A,1),size(B,1)),max(size(A,2),size(B,2))); for i=1:1:size(A,1) C(i,:)=A(i,:); end for i=1:1:size(B,2) C(:,i)=B(:,i); end disp(C);
所需的输出应该是这样的:
A: -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 B: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 C: 1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0
但是,我正在寻找一种更好的方法,而不使用循环.
这可以完全通过索引来完成.首先声明你的输出矩阵C
像之前,则更换前两排的C
有A
,则更换的前三列C
有B
:
%// Your code A=zeros(2,9)-1; B=ones(6,3); C=zeros(max(size(A,1),size(B,1)),max(size(A,2),size(B,2))); %// New code C(1:size(A,1),:) = A; C(:,1:size(B,2)) = B;
我们得到:
>> C C = 1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0