[問題] 不用迴圈,讓兩個矩陣做local的運算

看板MATLAB作者 (Coka)時間10年前 (2015/01/29 16:26), 10年前編輯推噓0(001)
留言1則, 1人參與, 最新討論串1/2 (看更多)
有兩個5x5矩陣如下: M = [ A1 A2 A3 o o ; M2 = [ B1 B2 B3 o o ; A4 A5 A6 o o ; B4 B5 B6 o o ; A7 A8 A9 o o ; B7 B8 B9 o o ; o o o o o ; o o o o o ; o o o o o ; o o o o o ; ] ] 我想讓兩個矩陣針對各個3x3的local matrix做運算 例如: 當位置在(2,2)時,M跟M2會以位置(2,2)當中心,分別擷取出3x3的local matrix M_l = [ A1 A2 A3 ; M2_l = [ B1 B2 B3 ; A4 A5 A6 ; B4 B5 B6 ; A7 A8 A9 ; B7 B8 B9 ; ] ] 在得到local matrix後,先對local matrix的內部做運算來改變M_l跟M2_1原有的值,接著 再利用M_l .* M2_l來產生一個新的matrix,並把矩陣內值加總起來當作這個位置新的值 最後的目標是每個位置都用上述的方式來執行,意即從位置(1,1)~(5,5)都跑過一次 不使用迴圈的原因是矩陣過大,跑兩個for loop再加上運算的話所需時間會很久 而要先擷取出local matrix是因為還需要做一些local matrix的內部運算來改變M_l跟 M2_1原有的值 問題:請問有沒有不使用迴圈的方式就可以把2個矩陣各個local的區域給擷取出來? 或是把local的區域儲存在cell中之類的方式? 像是cell位置(1,1)存的是以(1,1)為中心的3x3 local matrix,其他以此類推 希望各位先進能夠提供一些方法或是建議 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.123.218.122 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1422519987.A.F66.html ※ 編輯: waterCoka (140.123.218.122), 01/29/2015 16:35:30

04/03 12:33, , 1F
你只有舉例(2,2)為中心 那(1,1)為中心會抓到什麼?
04/03 12:33, 1F
文章代碼(AID): #1KoUwpzc (MATLAB)
文章代碼(AID): #1KoUwpzc (MATLAB)