我想找出 C 编程语言中 amxn 实数矩阵的最佳表示形式。
矩阵表示作为单指针的优点是什么:
double* A;
使用这种表示,您可以分配内存:
A = (double* )malloc(m * n * sizeof(double));
在这种表示矩阵中,访问需要一个额外的乘法:
aij = A[i * m + j];
矩阵表示作为双指针的缺点是什么:
double** B;
内存分配需要一个循环:
double** B = (double **) malloc(m * sizeof(double*));
for (i = 0; i < m; i++)
A[i] = (double *) malloc(n * sizeof(double))
在这种表示中,您可以使用直观的双索引 `bij = B[i][j],但是否存在一些会影响性能的缺点。我想知道就性能而言,最好的演示文稿是什么。
这些矩阵应该用于数值算法,例如奇异值分解。我需要定义一个函数:
void svd(Matrix A, Matrix U, Matrix Sigma, Matrix V);
我正在寻找代表 Matrix 的最佳方式。如果有任何其他有效的方法来表示 C 中的矩阵,请告诉我。
我已经看到大多数人使用单指针表示。我想知道与双数组表示相比是否有一些性能优势?