신호에서 60Hz 험 제거하기
미국 및 기타 여러 국가에서는 교류가 60Hz의 주파수로 진동합니다. 이러한 진동은 측정값을 손상시키는 경우가 많으므로 빼야 합니다.
60Hz 전력 공급선으로부터 잡음의 영향을 받고 있는 아날로그 계측기의 입력에서 개루프 전압을 조사해 보겠습니다. 전압은 1kHz로 샘플링되었습니다.
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
버터워스 노치 필터를 사용하여 60Hz 잡음을 제거합니다. designfilt
를 사용하여 필터를 설계합니다. 노치의 폭은 59Hz ~ 61Hz 주파수 구간으로 정의됩니다. 이 필터는 이 범위에 놓여 있는 주파수 성분 전력의 반 이상을 제거합니다.
d = designfilt('bandstopiir','FilterOrder',2, ... 'HalfPowerFrequency1',59,'HalfPowerFrequency2',61, ... 'DesignMethod','butter','SampleRate',Fs);
필터의 주파수 응답을 플로팅합니다. 참고로, 이 노치 필터는 최대 45dB의 감쇠량을 제공합니다.
freqz(d,[],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
주기도를 사용하여 60Hz에서 "스파이크"가 제거되었음을 확인합니다.
[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
| periodogram