如何在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
我有矩阵 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