Извлеките ГУМ с частотой 60 Гц из сигнала

Переменный ток в США и ряде других стран колеблется с частотой 60 Гц. Эти колебания часто повреждают измерения и должны быть вычтены.

Исследуйте разомкнутый контур напряжение на входе аналогового прибора в присутствии шума линии питания 60 Гц. Напряжение дискретизируется на частоте 1 кГц.

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

Figure contains an axes. The axes with title Open-Loop Voltage with 60 Hz Noise contains an object of type line.

Устраните шум 60 Гц с помощью фильтра с надрезом Баттерворта. Использование designfilt для разработки фильтра. Ширина надреза определяется интервалом частот от 59 до 61 Гц. Фильтр удаляет по меньшей мере половину степени частотных составляющих, лежащих в этой области значений.

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

Постройте график частотной характеристики фильтра. Обратите внимание, что этот узкополосный фильтр обеспечивает до 45 дБ ослабления.

fvtool(d,'Fs',Fs)

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 2 objects of type line.

Фильтрация сигнала с помощью filtfilt для компенсации задержки фильтра. Обратите внимание, как колебания значительно уменьшаются.

buttLoop = filtfilt(d,openLoop);

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

Figure contains an axes. The axes with title Open-Loop Voltage contains 2 objects of type line. These objects represent Unfiltered, Filtered.

Используйте периодограмму, чтобы увидеть, что «шип» при 60 Гц был устранен.

[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

Figure contains an axes. The axes with title Power Spectrum contains 2 objects of type line. These objects represent Unfiltered, Filtered.

См. также

| | |

Похожие темы