矩阵向量积

时间:2019-11-01 17:10:44

标签: c++ c++11

我在向量中具有矩阵的值:

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;
}

但是结果似乎不正确

1 个答案:

答案 0 :(得分:0)

您不能将矩阵乘以任意边的向量。

在与矩阵“右边”的向量(即result = my_matrix * my_vec的乘法中,向量my_vec必须是列向量,其长度与{{1 }};并且结果的每个元素都是my_matrix行和向量的内积。

您正在尝试使用my_matrix来“假装”可以将矩阵乘以任何向量。充其量是毫无意义的。

PS:我假设vec.size()是您开始引用的值向量。