【问题标题】:I have trouble with Matrices in Objective-C我在 Objective-C 中遇到了矩阵问题
【发布时间】:2013-02-13 14:03:50
【问题描述】:

此代码适用于将矩阵 a 和矩阵 b 发送到 matrixMultiply 方法的 2 矩阵相乘。

但我在“matrix12[i][j] += matrix1[i][k] * matrix2[k];”这一行遇到了麻烦

double **matrixMultiply(double *matrix1,double *matrix2,int row1,int col1,int col2){

    double **matrix12 = malloc(sizeof(double*)*row1);
    for (int i=0; i<row1; i++){
        matrix12[i] = malloc(sizeof(double*)col2);

        for (int j=0; j<col2; j++){
            matrix12[i][j] = 0.0;

            for (int k=0; k<col1; k++){
                matrix12[i][j] += matrix1[i][k] * matrix2[k]; //invalid operands to binary expression
            }
        }
    }
    return matrix12;
}

double *kmult = *matrixMultiply(a, b, 4, 4, 4,);

Ps.这段代码在 ViewController.m 中声明

【问题讨论】:

  • “你能把它修好吗?” - 不完全正确。我不知道它应该做什么,它目前做什么,以及你会为此付出多少。
  • 什么是b?我猜b[k] 应该替换为matrix2[k] and matrix1[i][k]` 应该替换为matrix1[n]nikj 左右。这很难说,只是猜测而不知道你想要实现什么。但是matrix1double* 你不应该访问第二维度。
  • 感谢您的评论。
  • 我把 double* 改成什么了?
  • 它是纯 C,而不是 Objective-C。

标签: objective-c c math matrix


【解决方案1】:

您确定 Matrix1 是二维矩阵吗?它是在一维矩阵中声明的:double *matrix1 而不是 "double **matrix1" 这可能就是为什么行 matrix12[i][j] += matrix1[i][k] * matrix2[k];不工作。

【讨论】:

  • 谢谢。它可以工作。无论如何,在“double *kmult = *matrixMultiply(a, b, 4, 4, 4,);“这也是不兼容的指针类型。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-08
  • 1970-01-01
  • 1970-01-01
  • 2019-09-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多