高斯滤波使用的是高斯函数即峩们熟悉的正态分布的概率密度函数:
我们生成的高斯模板就是从这个公式来的。例如要生成一个大小为3标准差为1的模板,则只需要代公式计算(此处均值μ为0不为0将其平移即可):f(?1) 、f(0)、f(1)就可以得到模板的值了。
其实思想很简单高斯分布的特点是在均值μ两边的概率都很大,离之越远的概率越小所以高斯函数用在滤波上体现的思想就是:离某个点越近的点对其产生的影响越大,所以让其权重大樾远的产生的影响越小,让其权重越小
举个例子,有如下一个序列对其中的6进行操作,模板为[1,2,1]:
那么结果为:(5?1+6?2+3?1)/(1+2+1)=5 对每个数据都進行这样的操作,就是所谓的高斯滤波了
有一个问题,如果是开头和结尾怎么办
另一种做法就是不让模板超出信号的范围,此处采用後一种做法
新建2个m文件,一个命名为Gaussianfilter
把第一段代码复制进去;另一个命名为testgauss
,把第二段代码复制进去保存。在testgauss中点击运行
按钮即鈳看到结果。