我在向量中具有矩阵的值:
vector<int> m_values;
并且我想将此“矩阵”乘以一个向量,我尝试过:
vector<float> Matrix::operator*(vector<float> vec) {
vector<float> c;
c.resize(vec.size());
int counter = 0;
float i = 0;
while (i <= float(m_values.size() / vec.size())) {
for (int j = 0; j < vec.size(); j++) {
if (counter > m_values.size() - 1) {
break;
}
c[j] = (m_values[counter] * vec[j]) + c[j];
counter++;
}
i++;
}
return c;
}
但是结果似乎不正确
答案 0 :(得分:0)
您不能将矩阵乘以任意边的向量。
在与矩阵“右边”的向量(即result = my_matrix * my_vec
的乘法中,向量my_vec
必须是列向量,其长度与{{1 }};并且结果的每个元素都是my_matrix
行和向量的内积。
您正在尝试使用my_matrix
来“假装”可以将矩阵乘以任何向量。充其量是毫无意义的。
PS:我假设vec.size()
是您开始引用的值向量。