【问题标题】:Dot product of matrix and vector without a loop没有循环的矩阵和向量的点积
【发布时间】:2018-10-09 11:21:50
【问题描述】:

假设我们有一个 Mx3 矩阵和一个 1x3 向量。如何在不使用循环的情况下计算每列和向量的点积?

【问题讨论】:

  • 你的意思是每一行和向量的点积吗?否则尺寸不匹配
  • 请用for循环举例

标签: matlab matrix vector vectorization dot-product


【解决方案1】:

如果我理解你的问题,

M = rand(8,3); V = 1:3;
P = sum( M .* V, 2 ); % or in older MATLAB versions: sum( bsxfun(@times, M, V), 2 );

如果您要处理复数,则可能需要对其中一个输入进行共轭。

【讨论】:

    【解决方案2】:

    使用 Dev-iL 的示例数据:

    M = rand(8,3);
    V = 1:3;
    

    MV 的每一行的点积只是矩阵与V 的转置:

    M * V'
    

    请注意,' 返回共轭转置,这是点积所需要的。


    如问题中所述,用M 计算点积是荒谬的,因为尺寸不匹配,因此我认为您的意思是行(就像其他答案一样)。

    【讨论】:

      猜你喜欢
      • 2021-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 2017-09-10
      相关资源
      最近更新 更多