2
在GSL中,一个实数n * m
矩阵M
在内部表示为大小为n*m
的数组。要访问M
的(i,j)元素,内部GSL必须访问数组的位置,其中涉及整数乘法和加法。GSL vs数值食谱。处理矩阵的最佳方法
在C的Numerical Recipes中,他们推荐了另一种方法来声明n
指针数组,每个指针指向一个数组m
。然后访问(i,j)元素,一个放入M[i-1][j-1]
。他们声称这更有效,因为它避免了整数倍增。缺点是必须分别初始化每个指针。
我想知道,每种方法的优缺点是什么?
请注意,习惯于0索引。这是最好的。 0是第一个元素。 – 2012-07-15 04:21:18
@JoshPetitt NR书使用1索引。以便代码与Fortran版本相同。在Fortran中编写了大量的数字代码。 – 2012-07-15 05:38:53
@马丁,你是对的。 Fortran中编写了许多数字代码。 Fortran具有列主要的顺序,并且通常Fortran对2D矩阵计算更快。 C不是Fortran。这个问题是用C标记的。在写C时,我会使用C约定。尤其是如果我关心的是尽可能快地用C来做事情。 – 2012-07-15 16:45:43