看板 MATLAB 關於我們 聯絡資訊
假設我有個 9 by 9 的矩陣A, 我需要在3 by 3這移動塊做平均, 所以A會被分 成9個區做平均, 並將平均值丟回A的原區域. 有不用for做的方法嗎? 用for跑起來好慢orz. 謝謝 *找到medfilt2好像可以做, 不過如果矩陣中間有不要做平均的部份要怎避開? *medfilt2做起來不是我想要的方法orz -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.110.203.63 ※ 編輯: DavisX 來自: 140.110.203.63 (03/17 16:01) ※ 編輯: DavisX 來自: 140.110.203.63 (03/17 16:23)
CBET:A = blockproc(A, [3, 3], @(block_struct) ... 03/17 16:36
CBET:mean(block_struct.data(:)) * ones(3)); 03/17 16:37
DavisX:感恩! 03/17 16:45
DavisX:Octave裡沒block_struct.data 是直接用block_struct 03/17 17:15
YoursEver:fun=@(x) mean2(x); B=blkproc(A, [1 1], [1 1], fun); 03/18 09:57
blkproc在2010b被移除了 blockproc有個缺點是, 在你vortex box的m n, 和原圖的 m0 n0, 不能被整除時, 出來的 矩陣大小會和原來的不一樣 (較大) ※ 編輯: DavisX 來自: 140.110.200.122 (03/18 16:26)
YoursEver:改成 B=blockproc(A, [1 1], fun, 'BordeSize', [1 1]); 03/19 09:53
YoursEver:大小差異是padding造成的,做一下實驗確認位置,砍掉即可. 03/19 10:30
DavisX:ohoh 感謝 來試試 03/19 13:06
DavisX:Octave還是沒有...orz 我改成抓和原區大小資料來用好了 03/19 13:18