Удалите гул на 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

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

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

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

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 Гц был устранен.

[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

Смотрите также

| | |

Похожие темы