本文主要是介绍matlab傅里叶变换去噪代码,科学网-傅里叶变换滤噪(Matlab)-甘峰的博文,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
设有一对数据(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')
红线是滤噪后的信号(画粗些,看得清楚些)。黄线是原始信号(画淡些,好对比)。
转载本文请联系原作者获取授权,同时请注明本文来自甘峰科学网博客。
收藏
分享
分享到:
这篇关于matlab傅里叶变换去噪代码,科学网-傅里叶变换滤噪(Matlab)-甘峰的博文的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!