我有两个矩阵:
A = [1 2;
3 4;
5 6]
B = A'
乘法应该采用从两者中提取行和列向量的方式
C = B(:,i) * A(i,:)
这样,对于第一个实例(第1行和第1列),结果将是:
[1 2;
2 4]
这将在垂直方向总结以获得[3 6]
。这笔款项将给出最终答案9
。同样,第二排&第2列,第3行&如果矩阵大小较高,则为第3列,依此类推。
此最终标量值将用于比较哪一行及其相应列具有高产量。
答案 0 :(得分:7)
您所需的结果实际上在数学上等同于:
sum(A,2).^2 %or sum(A,2) .* sum(A,2)
如果A
和B
没有相互转置,那么:
sum(A,2).* sum(B,1).'
答案 1 :(得分:3)
您可以使用sum
:
result = sum(bsxfun(@times,sum(A,2), B.'),2);
或者在最新版本的MATLAB中你可以写:
result = sum(sum(A,2).*B.',2)
上一个回答:
您可以使用permute:
result = sum(reshape(permute(A,[2 3 1]) .* permute(A,[3 2 1]),[],size(A,1)));
或者是A
和B
:
result = sum(reshape(permute(B,[1 3 2]) .* permute(A,[3 2 1]),[],size(A,1)));
result = [9 49 121]
感谢@TommasoBelluzzo和@SardarUsama。
答案 2 :(得分:2)
如果您的矩阵大小为Nx2
,则可能的答案是
A.*A * [1;1] + 2*A(:,1).*A(:,2)