当前位置:  开发笔记 > 编程语言 > 正文

如何在matlab中合并两个不同维度的矩阵

如何解决《如何在matlab中合并两个不同维度的矩阵》经验,为你挑选了1个好方法。

我喜欢在不使用循环的情况下在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

但是,我正在寻找一种更好的方法,而不使用循环.



1> rayryeng - R..:

这可以完全通过索引来完成.首先声明你的输出矩阵C像之前,则更换前两排的CA,则更换的前三列CB:

%// 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

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有