C 尝试将两个矩阵中的元素相乘时,二进制操作数无效
在一个方法中,我有一个m*n矩阵和一个分配为m*1矩阵的数组,不幸的是,在编译过程中,我遇到了以下错误:C 尝试将两个矩阵中的元素相乘时,二进制操作数无效,c,matrix,C,Matrix,在一个方法中,我有一个m*n矩阵和一个分配为m*1矩阵的数组,不幸的是,在编译过程中,我遇到了以下错误: main.c:337:30: error: invalid operands to binary * (have ‘float’ and ‘float *’) yp += matrixA[i][j] * listB[j]; 该方法的完整代码如下 float error(float **matrixA, float **listB, int m, int n
main.c:337:30: error: invalid operands to binary * (have ‘float’ and ‘float *’)
yp += matrixA[i][j] * listB[j];
该方法的完整代码如下
float error(float **matrixA, float **listB, int m, int n) {
int i, j;
float err = 0, de, yp;
for (i = 0; i < m; i++) {
yp = 0;
for (j = 0; j < n; j++)
yp += matrixA[i][j] * listB[j];
de = fabs(matrixA[i][j]-yp);
err += (de*de);
}
return err;
}
matrixA和listB使用相同的分配方法
为什么会出现这种错误?
我该怎么修理 listB[j]是float*类型。将其与浮点类型相乘。改变
yp += matrixA[i][j] * listB[j];
到
matrixA[i][j]*listB[j]看:float**matrixA,float**listB,有‘float’和‘float*’,这真的说明了一切……listB[j]类型是float*
yp += matrixA[i][j] * listB[j][i];