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

作者: waterCoka (Coka)   2015-01-29 16:26:22
有兩個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,其他以此類推
希望各位先進能夠提供一些方法或是建議
謝謝

Links booklink

Contact Us: admin [ a t ] ucptt.com