将水平乘以矩阵的垂直向量,并将结果与​​循环相加

时间:2016-03-04 19:46:09

标签: matlab math matrix octave

基本上,我有2个矩阵,我想重写一下:

for i = 1:m
  result += A(:, i) * B(:, i)';
end

不使用for循环,我不知道如何处理它。我已经花了好几个小时来解决它,所以我请你们帮助我。

1 个答案:

答案 0 :(得分:3)

这与简单地执行A的{​​{3}}和B的转置没有什么不同。

result = A * B.';

只是为了完整......

m = 10;
A = rand(15, m);
B = rand(12, m);

result = zeros(size(A, 1), size(B, 1));
for k = 1:m
    result = result + A(:,k) * B(:,k).';
end

difference = max(max(abs(result - A *B.')));

difference = 

    8.8818e-16