向量乘法(矩阵乘法)奇数输出的向量
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
的末尾并获得未定义的行为。
【讨论】:
我现在明白了。非常感谢。以上是关于向量乘法(矩阵乘法)奇数输出的向量的主要内容,如果未能解决你的问题,请参考以下文章