- 积分
- 24
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2016-11-6
- 最后登录
- 1970-1-1
|
发表于 2016-11-7 20:59:03
|
显示全部楼层
完整的文章在这里:【信号】用matlab实现一维信号的高斯滤波
- % 功能:对一维信号的高斯滤波,头尾r/2的信号不进行滤波
- % r :高斯模板的大小推荐奇数
- % sigma :标准差
- % y :需要进行高斯滤波的序列
- function y_filted = Gaussianfilter(r, sigma, y)
- % 生成一维高斯滤波模板
- GaussTemp = ones(1,r*2-1);
- for i=1 : r*2-1
- GaussTemp(i) = exp(-(i-r)^2/(2*sigma^2))/(sigma*sqrt(2*pi));
- end
- % 高斯滤波
- y_filted = y;
- for i = r : length(y)-r
- y_filted(i) = y(i-r+1 : i+r-1)*GaussTemp';
- end
复制代码
- % 测试数据
- x = 1:50;
- y = x + rand(1,50)*10;
- % 设置高斯模板大小和标准差
- r = 3;
- sigma = 1;
- y_filted = Gaussianfilter(r, sigma, y);
- % 作图对比
- plot(x, y, x, y_filted);
- title('高斯滤波');
- legend('滤波前','滤波后','Location','northwest')
复制代码
新建2个m文件,一个命名为`Gaussianfilter`,把第一段代码复制进去;另一个命名为`testgauss`,把第二段代码复制进去,保存。在testgauss中点击`运行`按钮,即可看到结果。 |
|