【问题标题】:Matrix Transpose in CC中的矩阵转置
【发布时间】:2017-05-24 06:09:05
【问题描述】:

假设我定义了一个矩阵并按以下方式赋值:

 double A[row * column];

 for (int j = 0; j < column; j++){
     for (int i = 0; i < row; i++){
       A[j*row + i] = ((double)rand())/RAND_MAX; // random value
     }
   }

如何计算这个矩阵的转置?我尝试了以下方法,但结果矩阵不正确。

double B[column * row]; 

for(int j = 0; j < row; j++){
     for(int i = 0; i < column; i++){
       B[j*row + i] = A[i*row + j];
     }
   }

【问题讨论】:

  • “它不起作用”到底是什么意思?有错误信息吗?
  • 它没有生成正确的矩阵@Codor
  • 显示sn-p生成输出,实际输出和预期输出。
  • 转置矩阵类似于交换两个变量的值。想想那个简单的案例以及那里可能出现的问题。然后检查你的代码是否犯了同样的错误。
  • 除非column == row,复制时需要使用不同的乘数。

标签: c matrix transpose matrix-transform


【解决方案1】:

索引应按以下方式完成。

double B[column * row];

for (int j = 0; j < row; j++){
    for (int i = 0; i < column; i++){
        B[j*column + i] = A[i*row + j];
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-06
    • 2013-09-28
    • 2021-07-05
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多