matlabfilter(Matlab filter2的用法[通俗易懂])

发布时间:2025-12-10 19:39:25 浏览次数:2

Matlab filter2的用法[通俗易懂]-matlab filter design

Matlab filter2的用法[通俗易懂]Matlabfilter2的用法Y=filter2(h,x,’shape’)h为滤波器,x为要滤波的数据,将h放在x上移动进行模板滤波。shape可取full,same,valid(不写默认是same)。下面直接看例子:首先用fspecial(‘average’)创建一个均值滤波器,默认3*3,每个值都是1/3*3=0.1111>>h=fspecial(…

Matlab filter2的用法

Y=filter2(h,x,’shape’)

h为滤波器,x为要滤波的数据,将h放在x上移动进行模板滤波。
shape可取 full,same,valid (不写默认是same)。

下面直接看例子:
首先用fspecial(‘average’)创建一个均值滤波器,默认3*3,每个值都是1/3*3=0.1111

>> h=fspecial('average')h =    0.1111    0.1111    0.1111    0.1111    0.1111    0.1111    0.1111    0.1111    0.1111

是否还在为Ide开发工具频繁失效而烦恼,来吧关注以下公众号获取最新激活方式。亲测可用!

为防止网络爬虫,请关注公众号回复”口令”

激活idea 激活CLion DataGrip DataSpell dotCover dotMemory dotTrace GoLand PhpStorm PyCharm ReSharper ReShaC++ Rider RubyMine WebStorm 全家桶 刷新

【正版授权,激活自己账号】:Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】:官方授权 正版激活 自己使用,支持Jetbrains家族下所有IDE…

然后创建个简单矩阵

>> x=[1,2,3;4,5,6;2,2,2] x = 1 2 3 4 5 6 2 2 2

使用filter2(h,x)

y=filter2(h,x)y =    1.3333    2.3333    1.7778    1.7778    3.0000    2.2222    1.4444    2.3333    1.6667

下面分析过程:首先滤波模板h的右下角点对准x的左上角点,那么h的其他点在x处就没有对应的点了,因此需要对x补0:(x补0后变成)

x = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 0 0 0 0 4 5 6 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

此时开始计算h与x对应的元素的乘积和:0+0+0+0+0+0+0+0+1*0.1111=0.1111
这个值作为补0后的x的矩阵在x(2,2)处对应的值,也是h中心点h(2,2)处对应的值。
然后h沿着x往右移动一列,计算乘积和,以此类推。
最终得出:
`y =

0.1111    0.3333    0.6667    0.5556    0.33330.5556    1.3333    2.3333    1.7778    1.00000.7778    1.7778    3.0000    2.2222    1.22220.6667    1.4444    2.3333    1.6667    0.88890.2222    0.4444    0.6667    0.4444    0.2222

这结果与前面我们得出的结果不一样,原因是前面我们得出的结果是shape=same的结果,而这里我们得出的结果是shape=full的结果,观察容易发现这里的结果中间9个值就是shape=same的结果。因为same得出的结果是与x大小相同的矩阵,因此,在h的右下角点对准x的5的时候(或者说h的中心点对准x的左上角点1的时候),乘积为(1+2+4+5)*0.1111=1.3333,这个结果才是x的矩阵在x(1,1)处对应的值,也是same结果的第一个值,以此类推得出其他的值。
由此我们得出(假设h的大小为p*q,x的大小为m*n):
shape=same时,返回的结果的大小是m*n
shape=full时,返回的结果大小是(p+m-1)*(q+n-1)
shape=valid时,边界不补0,返回的结果大小是(m-p+1)*(n-q+1)
下面是三种情况时的运行结果:

>> y=filter2(h,x,'full')y =    0.1111    0.3333    0.6667    0.5556    0.3333    0.5556    1.3333    2.3333    1.7778    1.0000    0.7778    1.7778    3.0000    2.2222    1.2222    0.6667    1.4444    2.3333    1.6667    0.8889    0.2222    0.4444    0.6667    0.4444    0.2222>> y=filter2(h,x,'same')y =    1.3333    2.3333    1.7778    1.7778    3.0000    2.2222    1.4444    2.3333    1.6667>> y=filter2(h,x,'valid')y =    3.0000

%%文章为作者手打,记录和分享自己的学习,如有错误请指出,转载请注明出处

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477