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