我需要在我的应用程序中执行许多矩阵操作,其中最耗时的是矩阵乘法。我是这样实现它的:
template<typename T>
Matrix<T> Matrix<T>::operator * (Matrix& matrix)
{
Matrix<T> multipliedMatrix = Matrix<T>(this->rows,matrix.GetColumns(),0);
for (int i=0;i<this->rows;i++)
{
for (int j=0;j<matrix.GetColumns();j++)
{
multipliedMatrix.datavector.at(i).at(j) = 0;
for (int k=0;k<this->columns ;k++)
{
multipliedMatrix.datavector.at(i).at(j) += datavector.at(i).at(k) * matrix.datavector.at(k).at(j);
}
//cout<<(*multipliedMatrix)[i][j]<<endl;
}
}
return multipliedMatrix;
}
有没有更好的方法来进行矩阵乘法?目前,在我的应用程序中,矩阵乘法操作占据了大部分时间。也许有很好/快的库来完成这种工作?但是我不能使用使用图形卡进行数学运算的库,因为我使用带有集成图形卡的笔记本电脑。