c - 当我尝试将两个矩阵中的元素相乘时,二进制操作数无效

标签 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) {
    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;
}

ma​​trixAlistB都使用相同的分配方法。

为什么会出现这个错误? 我应该如何修复?

最佳答案

listB[j]float * 类型。您将其与 float 类型相乘。改变

yp += matrixA[i][j] * listB[j];  

yp += matrixA[i][j] * listB[j][i];

关于c - 当我尝试将两个矩阵中的元素相乘时,二进制操作数无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24275293/

相关文章:

c++ - 将 32 0/1 值打包到单个 32 位变量的位中的最快方法是什么?

python - python中的矩阵镜像

c - 为什么我的代码会跳过用户的输入?

c - 指针语法查询

c - 识别干扰的可能性

c - 将被调用程序的输出存储在缓冲区中

matlab - 仅更新一个矩阵元素进行迭代计算

java - Java 中的快速矩阵计算

python - 如何使用迭代器接口(interface)将多个矩阵加载到 Chainer 模型中?

python - numpy 多维(3d)矩阵乘法