Умножение матрицы и вектора - PullRequest
0 голосов
/ 18 декабря 2011

Мне нужно умножить матрицу и вектор.

Для этого я написал функцию с параметрами:

float** M Максрикс измерений: mx n.

float* V Вектор длины n.

float* R Где я храню результат, вектор длины m уже выделен.

int m, int n Длина.

Вот мой код:

int i,j;

for (i=0;i<m;i++){
    for (j=0;j<n;j++){
            R[i]+=(M[i][j]*V[j]);
        }
}

Полный код функции:

void m_mult_v(float** M, float* V, float* R, int m, int n) {

    int i,j;

    for (i=0;i<m;i++){
        for (j=0;j<n;j++) {
            R[i]+=(M[i][j]*V[j]);
        }
    }
}

Проблема в том, что полученный результат не является правильным.: - / Есть идеи?

Спасибо за ваши будущие ответы!

РЕДАКТИРОВАТЬ

Решение найдено, спасибо за ваши советы!

Я только добавил эту часть кода, чтобы установить R на все нули.

for (i=0;i<m;i++){
    R[i] = 0;
}

1 Ответ

1 голос
/ 18 декабря 2011

Вы забыли инициализировать R?Если он выделен стеком или выделен с помощью malloc (), его начальное состояние не определено.

...