Матричное векторное произведение - PullRequest
0 голосов
/ 01 ноября 2019

У меня есть значения матрицы в векторе:

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 голосов
/ 01 ноября 2019

Вы не можете умножить матрицу на вектор произвольной стороны.

При умножении на вектор "справа" от матрицы, т.е. result = my_matrix * my_vec, вектор my_vec должен быть столбцомвектор, длина которого равна длине строки my_matrix;и каждый элемент результата является внутренним произведением строки my_matrix и вектора.

Вы пытаетесь как бы «притвориться», что матрица может быть умножена на любой вектор, используя vec.size(),В лучшем случае это бессмысленно.

PS: я полагаю, m_valor - это вектор значений, на который вы ссылались.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...