我需要将矩阵和向量相乘。
为了实现这一目标,我编写了一个带参数的函数:
float** M
维度的最大值:m x 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;
}
答案 0 :(得分:1)
你忘了初始化R?如果使用malloc()进行堆栈分配或分配,则不会定义其初始状态。