甘峰分享 http://blog.sciencenet.cn/u/ganfeng 研究人员

博文

傅里叶变换滤噪(Matlab)

已有 27559 次阅读 2011-1-16 23:46 |个人分类:分析化学教学|系统分类:教学心得

设有一对数据(x,y),用plot指令绘图,如下:

对y进行傅里叶变换:
s=fft(y);
得到的s的图像如下:(不是太好看,因为存在虚数。)

 
此时,如果我们对 s 执行傅里叶逆变换,那么又回到了 y,什么都没有改变。为了滤噪,必须清除噪声的成分。
噪声表现为高频信号,所以,滤除高频成分就可以消除噪声影响。采用截断函数可以做到这一点。执行:

m=length(s);
cutfun=ones(m,1);
cutfun(12:m-12-1)=0;    %% 将 12 至m-12-1范围置 0,截断高频信号,保留低频信号。
ss=s.*cuffun';                  %% 对傅里叶变换信号做截断操作。
f=ifft(ss);                         %% 傅里叶逆变换。
real_f=real(f);                  %% 取实部
 
 
滤噪结果:
plot(x,y,'y');
hold on
plot(x,real_f,'r','linewidth',3);      % 滤噪后的图像
xlabel('x')
xlabel('y')

红线是滤噪后的信号(画粗些,看得清楚些)。黄线是原始信号(画淡些,好对比)。
 
 



https://wap.sciencenet.cn/blog-43413-404955.html

上一篇:轮回乎!
下一篇:支持国产品牌(TCL)为什么这么难?
收藏 IP: 113.108.133.*| 热度|

1 唐常杰

发表评论 评论 (5 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-29 01:51

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部