注意:我使用C ++标准库,并将矩阵存储为多维向量(参见下面的示例)。
我无法找到在C ++中乘以两个矩阵的正确函数。澄清我试图做的事情:
A = | a1 a2 | B = | b1 |
| a3 a4 | | b2 |
Result = | (a1 * b1 + a2 * b2) |
| (a3 * b1 + a4 * b2) |
显然我可以使用一个简单的算法来做到这一点,但我试图找出是否有这样做的功能。
我在C ++中的具体示例:
#include <vector>
std::vector<std::vector<double>> A;
A.push_back({ 0.96, 0.56 });
A.push_back({ 0.01, 0.41 });
std::vector<std::vector<double>> B;
B.push_back({ 1.331749 });
B.push_back({ 1.0440705 });
Result = (A * B);
&#34; 结果&#34;将是:
| 1.8631586 |
| 0.4413864 |
我应该如何进行上述操作?
答案 0 :(得分:1)
不,C ++库中没有用于向量乘法的函数。有一些构建块,如std::for_each
,std::copy
和std::transform
,可用于实现它们,但您可以自己实现完整的算法。
可能有一些库在Intertubes上的某处浮动,它们实现了这些算法。你可以试试Google的运气。
答案 1 :(得分:1)
我不相信有一个函数可以像matrices一样将向量相乘,但是你自己实现它并不困难。我建议创建一个矩阵类。有了这个,你可以重载*运算符。这看起来如下:
class Matrix
{
private:
// Whatever implementation you choose.
// This would probably be done with a vector of vectors.
public:
Matrix& operator*(const Matrix&) const;
// Public interface
}
这将允许您开发一种用于乘以两个矩阵的简单算法。