我有一门课程需要学习
double *matrix;
int _row;
int _col;
在循环中:
for (int i = 0; i < _row; i++) {
for (int j = 0; j < _col; j++) {
matrix[i * _col + j] = 0.0;
}
}
我需要将两个矩阵相乘并得到一个新的矩阵:
Matrix MatrixOperations::Mul(const Matrix &m1, const Matrix &m2) {
if (m1.CheckMul(m2)) {
Matrix temp(m1._row, m2._col);
for (int i = 0; i < temp._row; i++) {
for (int j = 0; j < temp._col; j++) {
for (int k = 0; k <= temp._col; k++) {
temp.matrix[i * temp._col + j] += m1.matrix[i * temp._col + k] * m2.matrix[k * temp._col + j];
}
}
}
return temp;
}
}
代码不正确。我认为索引是错误的,但我无法理解或看到哪些是错误的。
有人有任何想法吗? 谢谢。
k < m1._col
而不是k <= temp._col
。 - Damien