[问题] 不用循环,让两个矩阵做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