我应该如何将C+中的两个矩阵相乘+;? 注释:我使用C++的标准库,并且把矩阵存储为多维向量(见下面的例子)。 在C++中,要找出两个矩阵相乘的正确函数是困难的。为了澄清我想做什么: A = | a1 a2 | B = | b1 | | a3 a4 | | b2 | Result = | (a1 * b1 + a2 * b2) | | (a3 * b1 + a4 * b2) |

我应该如何将C+中的两个矩阵相乘+;? 注释:我使用C++的标准库,并且把矩阵存储为多维向量(见下面的例子)。 在C++中,要找出两个矩阵相乘的正确函数是困难的。为了澄清我想做什么: A = | a1 a2 | B = | b1 | | a3 a4 | | b2 | Result = | (a1 * b1 + a2 * b2) | | (a3 * b1 + a4 * b2) |,c++,vector,C++,Vector,很明显,我可以用一个简单的算法来做这件事,但我试图找到是否有一个函数来做这件事 我在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.3

很明显,我可以用一个简单的算法来做这件事,但我试图找到是否有一个函数来做这件事

我在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);

< > >强>我应该怎么做?< <强> > /p> < P>不,C++中没有向量生成器的函数。有一些构建块,如
std::for_each
std::copy
、和
std::transform
,可以用来实现它们,但这取决于您自己实现完整的算法


可能有一些库在Intertube上的某个地方浮动,它们实现了这些算法。你可以试试谷歌的运气。

< P>不,在C++文库中没有向量乘的函数。有一些构建块,如
std::for_each
std::copy
、和
std::transform
,可以用来实现它们,但这取决于您自己实现完整的算法


可能有一些库在Intertube上的某个地方浮动,它们实现了这些算法。你可以试试谷歌的运气。

我不相信有一个函数可以像矩阵一样将向量相乘,但是它自己实现也不会那么困难。我建议创建一个矩阵类。使用此选项,您可以重载*运算符。如下所示:

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
}

这将允许您开发一个简单的算法,用于将两个矩阵相乘。

我不相信有一个函数可以将向量像矩阵一样相乘,但是,您自己实现起来并不困难。我建议创建一个矩阵类。使用此选项,您可以重载*运算符。如下所示:

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
}

这将允许您开发一个简单的算法,用于将两个矩阵相乘。

首先,您尝试将一个向量与表示为向量向量的矩阵相乘
std::vector
不是专门为这类事情设计的。尝试一些东西,例如特征库。你不是在乘两个向量,而是在乘两个矩阵。C++的标准向量库与数学矩阵无关。(我意识到在数学中,向量被认为是一维矩阵,但这个概念在这里并不适用。)作为前提,你试图用一个向量乘以一个表示为向量向量的矩阵
std::vector
不是专门为这类事情设计的。尝试一些东西,例如特征库。你不是在乘两个向量,而是在乘两个矩阵。C++的标准向量库与数学矩阵无关。(我意识到在数学中,向量被认为是一维矩阵,但这个概念在这里并不适用。)Blas?gemv有几个预建选项,如mkl和acml。Blas?gemv有几个预建选项,如mkl和acml。