Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Galería de diseño de filtro

Este ejemplo muestra cómo diseñar una variedad de filtros digitales FIR e IIR con la función en el producto Signal Processing Toolbox®.designfilt

La galería está diseñada para identificar una respuesta de filtro de interés, ver el código y usarla en su propio proyecto. Contiene ejemplos para cada una de las respuestas de filtro disponibles ofrecidas por.designfilt Sin embargo, tenga en cuenta que estas son solo algunas de las posibles formas en las que puede diseñar filtros para cada tipo de respuesta. Para obtener una lista exhaustiva de conjuntos de especificaciones, consulte la documentación de la caja de herramientas de procesamiento de señales.

Excepto cuando se indique lo contrario, en este ejemplo todas las unidades de frecuencia están en hercios, y todos los valores de ondulación y atenuación están en decibelios.

Filtros FIR de paso bajo

Equiripple Design

Fpass = 100; Fstop = 150; Apass = 1; Astop = 65; Fs = 1e3;  d = designfilt('lowpassfir', ...   'PassbandFrequency',Fpass,'StopbandFrequency',Fstop, ...   'PassbandRipple',Apass,'StopbandAttenuation',Astop, ...   'DesignMethod','equiripple','SampleRate',Fs);  fvtool(d)

Los filtros IIR lowpass

Maximally Flat Design

Fpass = 100; Fstop = 150; Apass = 0.5; Astop = 65; Fs = 1e3;  d = designfilt('lowpassiir', ...   'PassbandFrequency',Fpass,'StopbandFrequency',Fstop, ...   'PassbandRipple',Apass,'StopbandAttenuation',Astop, ...   'DesignMethod','butter','SampleRate',Fs);  fvtool(d)

Ripple in Passband and Stopband

N = 8; Fpass = 100; Apass = 0.5; Astop = 65; Fs = 1e3;  d = designfilt('lowpassiir', ...   'FilterOrder',N, ...     'PassbandFrequency',Fpass, ...   'PassbandRipple',Apass,'StopbandAttenuation',Astop, ...   'SampleRate',Fs);  fvtool(d)

Filtros FIR de paso alto

Equiripple Design

Fstop = 350; Fpass = 400; Astop = 65; Apass = 0.5; Fs = 1e3;  d = designfilt('highpassfir','StopbandFrequency',Fstop, ...   'PassbandFrequency',Fpass,'StopbandAttenuation',Astop, ...   'PassbandRipple',Apass,'SampleRate',Fs,'DesignMethod','equiripple');  fvtool(d)

Filtros IIR de paso alto

Maximally Flat Design

Fstop = 350; Fpass = 400; Astop = 65; Apass = 0.5; Fs = 1e3;  d = designfilt('highpassiir','StopbandFrequency',Fstop ,...   'PassbandFrequency',Fpass,'StopbandAttenuation',Astop, ...   'PassbandRipple',Apass,'SampleRate',Fs,'DesignMethod','butter');  fvtool(d)

Ripple in Passband and Stopband

N = 8; Fpass = 400; Astop = 65; Apass = 0.5; Fs = 1e3;  d = designfilt('highpassiir', ...   'FilterOrder',N, ...     'PassbandFrequency',Fpass, ...   'StopbandAttenuation',Astop,'PassbandRipple',Apass, ...   'SampleRate',Fs);  fvtool(d)

Filtros FIR de paso de banda

Equiripple Design

Fstop1 = 150; Fpass1 = 200; Fpass2 = 300; Fstop2 = 350; Astop1 = 65; Apass  = 0.5; Astop2 = 65; Fs = 1e3;  d = designfilt('bandpassfir', ...   'StopbandFrequency1',Fstop1,'PassbandFrequency1', Fpass1, ...   'PassbandFrequency2',Fpass2,'StopbandFrequency2', Fstop2, ...   'StopbandAttenuation1',Astop1,'PassbandRipple', Apass, ...   'StopbandAttenuation2',Astop2, ...   'DesignMethod','equiripple','SampleRate',Fs);  fvtool(d)

Asymmetric Band Attenuations

N = 50; Fstop1 = 150; Fpass1 = 200; Fpass2 = 300; Fstop2 = 350; Wstop1 = 3; Wstop2 = 100; Fs = 1e3;  d = designfilt('bandpassfir', ...   'FilterOrder',N, ...   'StopbandFrequency1',Fstop1,'PassbandFrequency1', Fpass1, ...   'PassbandFrequency2',Fpass2,'StopbandFrequency2', Fstop2, ...   'StopbandWeight1',Wstop1,'StopbandWeight2',Wstop2, ...    'DesignMethod','equiripple','SampleRate',Fs);    fvtool(d)

Los filtros IIR de bandpass

Maximally Flat Design

Fstop1 = 150; Fpass1 = 200; Fpass2 = 300; Fstop2 = 350; Astop1 = 65; Apass  = 0.5; Astop2 = 65; Fs = 1e3;  d = designfilt('bandpassiir', ...   'StopbandFrequency1',Fstop1,'PassbandFrequency1', Fpass1, ...   'PassbandFrequency2',Fpass2,'StopbandFrequency2', Fstop2, ...   'StopbandAttenuation1',Astop1,'PassbandRipple', Apass, ...   'StopbandAttenuation2',Astop2, ...   'DesignMethod','butter','SampleRate', Fs);  fvtool(d)

Ripple in Passband and Stopband

N = 8; Fpass1 = 200; Fpass2 = 300; Astop1 = 65; Apass  = 0.5; Astop2 = 65; Fs = 1e3;  d = designfilt('bandpassiir', ...   'FilterOrder',N, ...   'PassbandFrequency1', Fpass1,'PassbandFrequency2', Fpass2, ...   'StopbandAttenuation1', Astop1, 'PassbandRipple', Apass, ...   'StopbandAttenuation2', Astop2, ...   'SampleRate', Fs);  fvtool(d)

Filtros FIR de Bandstop

Equiripple Design

Fpass1 = 100; Fstop1 = 150; Fstop2 = 350; Fpass2 = 400; Apass1 = 0.5; Astop  = 65; Apass2 = 0.5; Fs = 1e3;  d = designfilt('bandstopfir', ...   'PassbandFrequency1',Fpass1,'StopbandFrequency1',Fstop1, ...   'StopbandFrequency2',Fstop2,'PassbandFrequency2',Fpass2, ...   'PassbandRipple1',Apass1,'StopbandAttenuation',Astop, ...   'PassbandRipple2', Apass2, ...   'DesignMethod','equiripple','SampleRate', Fs);  fvtool(d)

Asymmetric Passband Ripples

N = 30; Fpass1 = 100; Fstop1 = 150; Fstop2 = 350; Fpass2 = 400; Wpass1 = 1; Wpass2  = 10; Fs = 1e3;  d = designfilt('bandstopfir', ...   'FilterOrder',N, ...   'PassbandFrequency1',Fpass1,'StopbandFrequency1',Fstop1, ...   'StopbandFrequency2',Fstop2,'PassbandFrequency2',Fpass2, ...   'PassbandWeight1',Wpass1,'PassbandWeight2',Wpass2, ...   'DesignMethod','equiripple','SampleRate', Fs);  fvtool(d)

Filtros de Bandstop IIR

Maximally Flat Design

Fpass1 = 100; Fstop1 = 150; Fstop2 = 350; Fpass2 = 400; Apass1 = 0.5; Astop  = 65; Apass2 = 0.5; Fs = 1e3;  d = designfilt('bandstopiir', ...   'PassbandFrequency1',Fpass1,'StopbandFrequency1',Fstop1, ...   'StopbandFrequency2',Fstop2,'PassbandFrequency2',Fpass2, ...   'PassbandRipple1',Apass1,'StopbandAttenuation',Astop, ...   'PassbandRipple2', Apass2, ...   'DesignMethod','butter','SampleRate', Fs);  fvtool(d)

Ripple in Passband and Stopband

N = 8; Fpass1 = 125; Fpass2 = 375; Apass = 0.5; Astop  = 65; Fs = 1e3;  d = designfilt('bandstopiir', ...   'FilterOrder',N, ...   'PassbandFrequency1',Fpass1,'PassbandFrequency2',Fpass2, ...   'PassbandRipple',Apass,'StopbandAttenuation', Astop, ...   'SampleRate',Fs);  fvtool(d)

Filtros FIR de magnitud arbitraria

Single-Band Arbitrary Magnitude Design

N = 300;  % Frequencies are in normalized units F1 = 0:0.01:0.18; F2 = [.2 .38 .4 .55 .562 .585 .6 .78]; F3 = 0.79:0.01:1; FreqVect = [F1 F2 F3]; % vector of frequencies  % Define desired response using linear units A1 = .5+sin(2*pi*7.5*F1)/4;    % Sinusoidal section A2 = [.5 2.3 1 1 -.2 -.2 1 1]; % Piecewise linear section A3 = .2+18*(1-F3).^2;          % Quadratic section  AmpVect = [A1 A2 A3];  d = designfilt('arbmagfir',...   'FilterOrder',N,'Amplitudes',AmpVect,'Frequencies',FreqVect,...   'DesignMethod','freqsamp');  fvtool(d,'MagnitudeDisplay','Zero-phase')

Multiband Lowpass Design with Stepped Attenuation Levels on Stopband

N = 150; B = 2; % Number of bands % Frequencies are in normalized units F1 = [0 .25]; % Passband F2 = [.3 .4 .401 .5 .501 .6 .601 .7 .701 .8 .801 .9 .901 1]; % Stopband A1 = ones(size(F1));  % Desired amplitudes for band 1 in linear units A2 = zeros(size(F2)); % Desired amplitudes for band 2 in linear units % Vector of weights W = 10.^([0 0 5 5 10 10 15 15 20 20 25 25 30 30 35 35]/20); W1 = W(1:2);   % Weights for band 1 W2 = W(3:end); % Weights for band 2  d = designfilt('arbmagfir', ...   'FilterOrder',N,'NumBands',B, ...   'BandFrequencies1',F1,'BandAmplitudes1',A1, ...   'BandFrequencies2',F2,'BandAmplitudes2',A2, ...   'BandWeights1',W1,'BandWeights2', W2);  fvtool(d)

Filtros de FIR diferenciador

Full Band Design

N = 41; Fs = 1e3;  d = designfilt('differentiatorfir', ... 'FilterOrder',N, 'DesignMethod','equiripple','SampleRate',Fs);  fvtool(d,'MagnitudeDisplay','zero-phase','OverlayedAnalysis','phase')

Partial Band Design

N = 40; Fpass = 100; Fstop = 150; Fs = 1e3;  d = designfilt('differentiatorfir', ... 'FilterOrder',N, ... 'PassbandFrequency',Fpass,'StopbandFrequency',Fstop, ... 'DesignMethod','equiripple','SampleRate',Fs);  fvtool(d,'MagnitudeDisplay','zero-phase','OverlayedAnalysis','phase')

Los filtros FIR de Hilbert

Equiripple Design

N = 40; Tw = 50; Fs = 1e3;  d = designfilt('hilbertfir', ... 'FilterOrder',N,'TransitionWidth',Tw, ... 'DesignMethod','equiripple','SampleRate',Fs);  fvtool(d,'MagnitudeDisplay','Zero-phase','OverlayedAnalysis','phase')