我想将矩阵A
的每个元素添加到矩阵B
,并使用扩展矩阵A
作为新矩阵C
。
A = [1 2 3]
B =
[10 20
20 30]
必需的结果矩阵2x6:
C =
[11 12 13 21 22 23;
21 22 23 31 32 33]
答案 0 :(得分:1)
这是使用bsxfun
-
reshape(bsxfun(@plus, permute(B,[1,3,2]), A),size(B,1),[])
示例运行 -
>> A
A =
1 2 3
>> B
B =
10 20
20 30
>> reshape(bsxfun(@plus, permute(B,[1,3,2]), A),size(B,1),[])
ans =
11 12 13 21 22 23
21 22 23 31 32 33
答案 1 :(得分:0)
您可以使用kron
将A
和B
扩展为正确的尺寸,然后将它们添加到一起:
>> A2 = kron(A, ones(2, 2))
A2 =
1 1 2 2 3 3
1 1 2 2 3 3
>> B2 = kron(B, (1, 3))
B2 =
10 10 10 20 20 20
20 20 20 30 30 30
>> C = A2 + B2
C =
11 11 12 22 23 23
21 21 22 32 33 33
或者作为一个单行:
C = kron(A, ones(2, 2)) + kron(B, ones(1, 3))
如果A
和B
的尺寸可变,您可以执行类似
C = kron(A, ones(size(B))) + kron(B, ones(size(A)))
Kronecker产品的属性保证了它始终按预期工作。