[問題] 只針對矩陣中的某個區域做運算
有個5x5矩陣M如下:
M = [ A B C o o ;
D E F o o ;
G H I o o ;
o o o o o ;
o o o o o ;
]
A B C
D E F
如果我想針對 G H I 的3x3區域做運算,讓E跟它鄰近的值做計算後存回去
例如把(E*A)/2、(E*B)/2、(E*C)/2、...、(E*I)/2的值加總起來,接著把加總的值
除以這些鄰居的數量,最後存回E中
最後的需求是矩陣中的每個位置都套用此方法run過一便,就像是matlab中的imfilter
不希望使用到迴圈的原因是,當矩陣過大時,耗時會很久
(1)這有點類似於imfilter的概念,請問該如何做會比較好?
(2)另外想到的問題,拿上面的例子來說,假設已經有一個3x3的R矩陣可以讓目前的
位置跟它的鄰居做計算。但如果我把這個R矩陣套用到A的位置時,要怎麼得知A的
附近只有B、D、E這3個鄰居呢? (p.s.這樣做上面提到的運算時才知道要除以幾)
希望各位先進能夠給點建議或方法
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.123.218.122
※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1421496929.A.40E.html
※ 編輯: waterCoka (140.123.218.122), 01/18/2015 04:01:46
推
01/19 02:25, , 1F
01/19 02:25, 1F
謝謝你的回覆,我想問一下有關的問題
如果把Kernel中的1,改為矩陣中的E值,感覺還是需要一個迴圈把矩陣中一系列中心的值
copy過去,或者說有更快的方法,可以做到這個行為?
[E E E; [F F F;
E 0 E; F 0 F;
假設這次的kernel是 E E E],那麼下次往右掃時會變成kernel F F F],每次kernel的1都
用目前掃到的中心點來取代
※ 編輯: waterCoka (140.123.218.122), 01/19/2015 05:00:20
推
01/19 18:30, , 2F
01/19 18:30, 2F
→
01/19 20:34, , 3F
01/19 20:34, 3F
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章