我有两个 n×m 矩阵,A
and B
。我想创建一个新的矩阵C
类似于:
for i = 1:n
C = C + outerProduct(A(i,:), B(i,:));
end
i.e. C
是一个大小为 m x m 的矩阵,即各行的所有外积之和A
and B
.
有没有一种无需 for 循环的快速方法(考虑到 for 循环在 Matlab 中非常慢)?
您正在执行的操作(行外积之和)相当于转置版本的乘法A
with B
:
C = A.'*B;
您可以使用以下示例来查看这一点:
>> mat = magic(5); %# A sample 5-by-5 matrix
>> A = mat(1:4,:); %# Create a 4-by-5 matrix
>> B = mat(2:5,:); %# Create another 4-by-5 matrix
>> C = zeros(5); %# Initialize C to be 5-by-5
>> for i = 1:4, C = C + A(i,:).'*B(i,:); end; %'# Calculate C as you are now
>> isequal(C, A.'*B) %'# Test for equality with the shorter solution
ans =
1 %# Equal!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)