我喜欢在 MATLAB 中合并两个不同维度的矩阵而不使用循环,因为我已经用循环完成了。
下图显示了我想要实现的目标。
我也试过这个链接,但这不是我想要的:Merging two matrices of different dimension in 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
,然后用 A
替换 C
的前两行,然后替换前三列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
关于matlab - 如何在matlab中合并两个不同维度的矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34083685/