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不是没有存储这些维度,就是忽略了它们(这就是我的答案)。