C++ 矩阵向量积
我有向量中矩阵的值:C++ 矩阵向量积,c++,c++11,C++,C++11,我有向量中矩阵的值: vector<int> m_values; 向量m_值; 我想把这个“矩阵”乘以一个向量,我试过: vector<float> Matrix::operator*(vector<float> vec) { vector<float> c; c.resize(vec.size()); int counter = 0; float i = 0; while (i <= floa
vector<int> m_values;
向量m_值;
我想把这个“矩阵”乘以一个向量,我试过:
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;
}
向量矩阵::运算符*(向量向量){
载体c;
c、 调整大小(vec.size());
int计数器=0;
浮点数i=0;
while(i m_values.size()-1){
打破
}
c[j]=(m_值[计数器]*vec[j])+c[j];
计数器++;
}
i++;
}
返回c;
}
但是结果似乎不正确你不能用任意长度的向量乘以矩阵 在与矩阵“右侧”的向量相乘时,即
结果=my_matrix*my_vec
,向量my_vec
必须是一个列向量,其长度与my_matrix
的行长度相同;结果的每个元素都是一行my_矩阵
和向量的内积:
您试图使用vec.size()
对矩阵进行排序,假装矩阵可以与任何向量相乘。那充其量也没有意义
PS:我假设
m_valor
是您开始引用的值向量。您可能不应该按值传递输入向量-您正在无用地复制它;尝试对其进行常量引用。此外,如果您可以提供一个完整的小程序,而不仅仅是一个函数的形式,则会更好。对于矩阵维度的存储位置也没有任何提示。矩阵有两个维度(行数和列数),而不仅仅是一个大小。维度会影响矩阵/向量乘法的定义。@马克:我认为OP不是没有存储这些维度,就是忽略了它们(这就是我的答案)。