Переменный ток в Соединенных Штатах и нескольких других странах колеблется на частоте 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
designfilt
| filtfilt
| fvtool
| periodogram