从信号中去除 60 Hz 杂声

编程入门 行业动态 更新时间:2024-10-23 05:02:00

从<a href=https://www.elefans.com/category/jswz/34/1770365.html style=信号中去除 60 Hz 杂声"/>

从信号中去除 60 Hz 杂声

        美国和其他几个国家/地区的交流电以 60 Hz 的频率振荡。这些振荡通常会破坏测量结果,必须将其减去。

        在存在 60 Hz 电力线噪声的情况下,研究模拟仪器的输入的开环电压。电压采样频率为 1 kHz。

load openloop60hertz, openLoop = openLoopVoltage;Fs = 1000;
t = (0:length(openLoop)-1)/Fs;plot(t,openLoop)
ylabel('Voltage (V)')
xlabel('Time (s)')
title('Open-Loop Voltage with 60 Hz Noise')
grid

        如图所示:

        使用 Butterworth 陷波滤波器消除 60 Hz 噪声。使用designfilt设计该滤波器。陷波的宽度定义为 59 至 61 Hz 的频率区间。滤波器至少去除该范围内频率分量的一半功率。

d = designfilt('bandstopiir','FilterOrder',2, ...'HalfPowerFrequency1',59,'HalfPowerFrequency2',61, ...'DesignMethod','butter','SampleRate',Fs);

        绘制滤波器的频率响应。请注意,此陷波滤波器提供高达 45 dB 的衰减。

fvtool(d,'Fs',Fs)

        如图所示:

         用 filtfilt 对信号进行滤波,以补偿滤波器延迟。注意振荡是如何显著减少的。

buttLoop = filtfilt(d,openLoop);plot(t,openLoop,t,buttLoop)
ylabel('Voltage (V)')
xlabel('Time (s)')
title('Open-Loop Voltage')
legend('Unfiltered','Filtered')
grid

        如图所示:

        使用周期图可以看到 60 Hz 的“峰值”已去除。 

[popen,fopen] = periodogram(openLoop,[],[],Fs);
[pbutt,fbutt] = periodogram(buttLoop,[],[],Fs);plot(fopen,20*log10(abs(popen)),fbutt,20*log10(abs(pbutt)),'--')
ylabel('Power/frequency (dB/Hz)')
xlabel('Frequency (Hz)')
title('Power Spectrum')
legend('Unfiltered','Filtered')
grid

        如图所示:

更多推荐

从信号中去除 60 Hz 杂声

本文发布于:2023-11-16 12:46:41,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1622023.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:信号   杂声   Hz

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!