设有一对数据(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://blog.sciencenet.cn/blog-43413-404955.html
上一篇:
轮回乎!下一篇:
支持国产品牌(TCL)为什么这么难?