作者waterCoka (Coka)
看板MATLAB
标题[问题] 不用回圈,让两个矩阵做local的运算
时间Thu Jan 29 16:26:22 2015
有两个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://webptt.com/cn.aspx?n=bbs/MATLAB/M.1422519987.A.F66.html
※ 编辑: waterCoka (140.123.218.122), 01/29/2015 16:35:30
1F:→ ja20331: 你只有举例(2,2)为中心 那(1,1)为中心会抓到什麽? 04/03 12:33