оператор * умножить вектор и матрицу смежности - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть матрица смежности, реализованная следующим образом:

struct Matrix {
        int m_row;
        int m_col;
        float m_val;
    };
    vector<Matrix> matrix;

У меня есть вектор структуры, который хранит значения, строки и столбцы, только если значение отличается от 0. Я хотел бы реализовать оператор *, в котором я умножил свою матрицу на вектор. Моя получающаяся матрица смежности это следующая: Матрица смежности , первый параметр - строка, второй столбец и последнее значение. Мой вектор имеет 10 позиций и все значения 1. Это мой оператор * (это не работает правильно, не получает правильный результат):

vector<float> SparseMatrix::operator*(const vector<float> x) const {

    vector<float> result(x.size(), 0);

    for (int i = 0; i < m_Nrows; i++) //m_Nrow --> Number of rows.
    {
        for (int j = 0; j < m_Ncol; j++) {

            result[i] += (matrix[i].m_val * x[j]);//m_Ncol --> Number of columns
        }

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