【问题标题】:How to merge two matrices of different dimensions in matlab如何在matlab中合并两个不同维度的矩阵
【发布时间】:2015-12-04 08:14:11
【问题描述】:

我喜欢在 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

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

【问题讨论】:

    标签: matlab matrix vectorization


    【解决方案1】:

    这可以完全通过索引来完成。首先像之前一样声明你的输出矩阵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
    

    【讨论】:

    • 如何在矩阵维度的基础上推广这个 2 和 3 的值?C(1:2,:) = A; C(:,1:3) = B;如果我分别取 A 和 B 的最小尺寸,那通常是正确的吗?
    • @ShvetChakra 我已经编辑了代码以使其更通用。这将首先检查A 中的总行数并替换C 中的这些行。之后,我们查看B 中的总列数并替换C 中的这些列。没有错误检查,因此您需要确保 A 中的总行数和 B 中的总列数可以适合 C 的正确尺寸,但您在创建时确保这一点无论如何,初始的C 矩阵。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-28
    • 1970-01-01
    • 2016-08-18
    • 2018-04-23
    • 2020-10-27
    相关资源
    最近更新 更多