Re: [問題] 有關矩陣內的元素的位置已回收

看板MATLAB作者 (神無月 孝臣)時間14年前 (2009/10/15 15:53), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/5 (看更多)
: → promessa:原來元素的位置也可以用 a(k) 來表示,之前一直以為要用 10/15 14:37 : → promessa:a(m,n) 的形式. 10/15 14:37 應該說矩陣在記憶體內部儲存時 本來就是用一個column在儲存的 是因為有一個index換算 才能表現多個維度 matlab內建指令有ind2sub和sub2ind可以讓使用者簡單做做兩者的互相換算 而這個換算在寫程式是個很重要的一個地方 因為做index換算是要時間的 所以避免掉愈多index換算可以讓程式效率更好 用矩陣乘法來舉例的話(雖然matlab內建矩陣乘法了) 最簡單的直觀寫法是使用三個迴圈 for i = 1 : L for j = 1 : N C( i , j ) = 0 ; for k = 1 : M C( i , j ) = C( i , j ) + A( i , k ) * B( k , j ) ; end end end 最長那一行可以看到進行了四次index換算 如果把矩陣乘法做個小改寫的話 for i = 1 : L for j = 1 : N temp = 0 ; for k = 1 : M temp = temp + A( i , k ) * B( k , j ) ; end C( i , j ) = temp ; end end 原本很長的那一行的index換算從四次變成了兩次 在進行大型矩陣乘法時 會比原來的程式碼快上非常多 所以要進行程式碼加速的話 矩陣index換算的數量也是一個可以下手的地方 -- Deserves death! I daresay he does. Many that live deserve death. And some die that deserve life. Can you give that to them? Then be not too eager to deal out death in the name of justice, fearing for your own safty. Even the wise cannot see all ends. Gandalf to Frodo -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.120.25.235
文章代碼(AID): #1ArjJo1O (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1ArjJo1O (MATLAB)