向量乘法(矩阵乘法)奇数输出的向量

Posted

技术标签:

【中文标题】向量乘法(矩阵乘法)奇数输出的向量【英文标题】:Vector of vector multiplication (matrix multiplication) odd output 【发布时间】:2014-03-18 22:37:20 【问题描述】:

我试过没有错误,[2x2] * [2x2] 和 [2x3] * [3x2]。 “odd one”是 [3x2] * [2x3] 的输出。它的输出如下所示:第 1 行:[9 10 11],第 2 行:[39 44 49],第 3 行:[69 78 87 0 0 0297 0]。第 3 行的输出是添加元素,这与之前的 2x2 和 (2x3 * 3x2) 试验不同。

这是我认为问题所在的代码的 sn-p。

int sum;
outputVec.resize(vec1.size());
for(int i = 0; i < vec1.size(); i++) 
    for(int k = 0; k < vec2[i].size(); k++) 
        sum = 0;
        for(int j = 0; j < vec1[i].size(); j++) 
            sum += (vec1[i][j] * vec2[j][k]);
        
        outputVec[i].push_back(sum);
    

for(int i = 0; i < outputVec.size(); i++) 
    for(int j = 0; j < outputVec[i].size(); j++) 
        printf("%3d",outputVec[i][j]);
    
    cout << endl;

【问题讨论】:

@Manu343726 如果我决定使用双精度数,则更容易格式化数字。 【参考方案1】:
for(int i = 0; i < vec1.size(); i++)

  for(int k = 0; k < vec2[i].size(); k++)
  ...

vec2 的行数不一定与vec1 一样多(如 (3x2) * (2x3) 的情况)。您正在阅读 vec2 的末尾并获得未定义的行为。

【讨论】:

我现在明白了。非常感谢。

以上是关于向量乘法(矩阵乘法)奇数输出的向量的主要内容,如果未能解决你的问题,请参考以下文章

GLM的向量矩阵乘法行为?

矩阵和向量的乘法顺序

矩阵乘法:向量到矩阵的转换

犰狳向量矩阵乘法

线性代数——矩阵乘法(续)

numpy矩阵向量乘法[重复]