我需要将矩阵和 vector 相乘。
为了实现这一点,我编写了一个带参数的函数:
float** M
尺寸的最大值:m x n。
float* V
长度为 n 的 vector 。
float* R
我在其中存储结果,长度为 m 的 vector ,已分配。
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]);
}
}
}
问题是我得到的结果不正确。 :-/有什么想法吗?
感谢您 future 的回答!
编辑
解决方案已找到,感谢您的提示!
我刚刚添加了这部分代码,将 R 设置为全零。
for (i=0;i<m;i++){
R[i] = 0;
}
最佳答案
您忘记初始化 R?如果它是堆栈分配的或使用 malloc() 分配的,则其初始状态未定义。
关于c - 矩阵与 vector 相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8553114/