如何在matlab中添加3个一维相同且其他维不同的矩阵?

how to add 3 matrices with one dimension same for all and other dimension different in matlab?

我有矩阵 A=2x2 B=2x4 C=2x2 例如我想要矩阵 D=2x16 的结果

A=[1 3;
   2 4]
B=[3 2 4 2;
   4 3 6 3]
C=[4 5;
   7 5]
D=[(1+3+4) (1+3+5) (1+2+4) (1+2+5) (1+4+4) (1+4+5) (1+2+4) (1+2+5) (3+3+4) (3+3+5) (3+2+4) (3+2+5) (3+4+4) (3+4+5) (3+2+4) (3+2+5);
   (2+4+7) (2+4+5) (2+3+7) (2+3+5) (2+6+7) (2+6+5) (2+3+7) (2+3+5) (4+4+7) (4+4+5) (4+3+7) (4+3+5) (4+6+7) (4+6+5) (4+3+7) (4+3+5)]

表示结果中添加了按行元素。我有一个 A=2x1 的代码,但我可以理解如何根据 A=2x2 来塑造它,代码如下

[rows,col_B]=size(B);
[~,col_C]=size(C);
result=zeros(rows,col_B*col_C);
for i=1:col_B
    for  j=1:col_C
        result(:,(i-1)*col_C+j)=A+B(:,i)+C(:,j);
    end
end

谁能告诉我这段代码中输出 RESULT 的语法?

尝试

D = kron(A,ones(1,size(B,2)*size(C,2)))+repmat(kron(B,ones(1,size(C,2))),1,size(A,2))+repmat(C,1,size(B,2)*size(A,2))

解释:kron(Mat, ones(1,num2RepeatColumns)),重复矩阵的每一列,Mat。所以 "repeating" 两次使 A = [1 2; 3 4] 变成 A = [1 1 2 2; 3 3 4 4],见 Matlab: repeat every column sequentially n times

repmat(Mat, 1, num2RepeatMatrix) 复制整个矩阵,Mat 和 "pastes" 它紧挨着原始矩阵,所以 A=[1 2; 3 4] 变成 A = [1 2 1 2; 3 4 3 4]。请参阅 "Horizontal Stack" repmat 示例:https://www.mathworks.com/help/matlab/ref/repmat.html

D=[];
for ii=1:size(A,2)
    D=[D,A(:,ii)+kron(B,ones(1,size(C,2)))+repmat(C,1,size(B,2))];
end