Eliminar el zumbido de 60 Hz de una señal
La corriente alterna en Estados Unidos y en muchos otros países oscila a una frecuenta de 60 Hz. Estas oscilaciones corrompen a menudo las mediciones y deben eliminarse.
Estudie el voltaje de lazo abierto en la entrada de un instrumento analógico en presencia de ruido de un cable de luz a 60 Hz. El voltaje se muestrea a 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
Elimine el ruido de 60 Hz utilizando un filtro de nudo de Butterworth. Utilice designfilt
para diseñar el filtro. El intervalo de frecuencia entre 59 y 61 Hz define el ancho del nudo. El filtro elimina al menos la mitad de la potencia de los componentes de frecuencia que se encuentran dentro de ese rango.
d = designfilt('bandstopiir','FilterOrder',2, ... 'HalfPowerFrequency1',59,'HalfPowerFrequency2',61, ... 'DesignMethod','butter','SampleRate',Fs);
Represente la respuesta en frecuencia del filtro. Tenga en cuenta que este filtro de nudo proporciona hasta 45 dB de atenuación.
fvtool(d,'Fs',Fs)
Filtre la señal con filtfilt
para compensar el retardo del filtro. Observe cómo las oscilaciones disminuyen significativamente.
buttLoop = filtfilt(d,openLoop); plot(t,openLoop,t,buttLoop) ylabel('Voltage (V)') xlabel('Time (s)') title('Open-Loop Voltage') legend('Unfiltered','Filtered') grid
Utilice el periodograma para comprobar que se ha eliminado el "pico" a 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
Consulte también
designfilt
| filtfilt
| FVTool | periodogram