Diseñar un filtro con fdesign
Siga los dos pasos siguientes para diseñar un filtro sencillo.
Cree un objeto de especificación de filtro.
Diseñe su filtro.
Supongamos que quiere diseñar un filtro paso banda. Normalmente, un filtro paso banda se define como se muestra en la siguiente figura.

En este ejemplo, se utiliza una frecuencia de muestreo de Fs = 48 kHz. Este filtro paso banda tiene las siguientes especificaciones, especificadas aquí mediante el código de MATLAB®:
A_stop1 = 60; % Attenuation in the first stopband = 60 dB F_stop1 = 8400; % Edge of the stopband = 8400 Hz F_pass1 = 10800; % Edge of the passband = 10800 Hz F_pass2 = 15600; % Closing edge of the passband = 15600 Hz F_stop2 = 18000; % Edge of the second stopband = 18000 Hz A_stop2 = 60; % Attenuation in the second stopband = 60 dB A_pass = 1; % Amount of ripple allowed in the passband = 1 dB
En los pasos siguientes, estas especificaciones se transfieren al método fdesign.bandpass como parámetros.
- Paso 1
Para crear un objeto de especificación de filtro, evalúe el siguiente código en la línea de comandos de MATLAB:
d = fdesign.bandpass
Ahora, transfiera las especificaciones del filtro que se correspondan con la
Specificationpredeterminada:fst1,fp1,fp2,fst2,ast1,ap,ast2. Este ejemplo añadefscomo último argumento de entrada para especificar la frecuencia de muestreo de 48 kHz.>> BandPassSpecObj = ... fdesign.bandpass('Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2', ... F_stop1, F_pass1, F_pass2, F_stop2, A_stop1, A_pass, ... A_stop2, 48000)Nota
No se especifica el orden del filtro, lo que permite un grado de libertad en el diseño del algoritmo con el fin de lograr la especificación. El diseño será un diseño de orden mínimo.
Todos los parámetros de la especificación, como
Fstop1, reciben valores predeterminados cuando no se proporciona ninguno. Puede cambiar los valores de los parámetros de la especificación después de que se haya creado el objeto de especificación de filtro. Por ejemplo, si hay que cambiar dos valores,Fpass2yFstop2, utilice el comandoset, que toma primero el objeto y luego los pares de valores de los parámetros. Evalúe el siguiente código en la línea de comandos de MATLAB:>> set(BandPassSpecObj, 'Fpass2', 15800, 'Fstop2', 18400)
BandPassSpecObjes el nuevo objeto de especificación de filtro que contiene todos los parámetros de diseño necesarios, incluido el de tipo de filtro.También puede cambiar los valores de los parámetros de los objetos de especificación de filtros accediendo a ellos como si fueran elementos de un arreglo
struct.>> BandPassSpecObj.Fpass2=15800;
- Paso 2
Diseñe el filtro mediante el comando
design. Puede acceder a los métodos de diseño disponibles para el objeto de especificación llamando a la funcióndesignmethods. Por ejemplo, en este caso, puede ejecutar el comandoDespués de seleccionar un método de diseño, puede evaluar lo siguiente en la línea de comandos de MATLAB (este ejemplo supone que ha seleccionado ">> designmethods(BandPassSpecObj) Design Methods for class fdesign.bandpass (Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2): butter cheby1 cheby2 ellip equiripple kaiserwin
equiripple"):>> BandPassFilt = design(BandPassSpecObj, 'equiripple') BandPassFilt = FilterStructure: 'Direct-Form FIR' Arithmetic: 'double' Numerator: [1x44 double] PersistentMemory: falseSi tiene DSP System Toolbox™ instalada, puede diseñar su filtro con un System object™ de filtro. Para crear un System object de filtro con el mismo objeto de especificación
BandPassSpecObj, puede ejecutar los comandosLos métodos de diseño y las opciones de diseño disponibles de System object de filtro no son necesariamente los mismos que los de los objetos de filtro.>> designmethods(BandPassSpecObj,... 'SystemObject',true) Design Methods that support System objects for class fdesign.bandpass (Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2): butter cheby1 cheby2 ellip equiripple kaiserwin >> BandPassFiltSysObj = design(BandPassSpecObj,... 'equiripple','SystemObject',true) System: dsp.FIRFilter Properties: Structure: 'Direct form' NumeratorSource: 'Property' Numerator: [1x44 double] InitialConditions: 0 FrameBasedProcessing: true Show fixed-point propertiesNota
Si no especifica un método de diseño, se utilizará un método predeterminado. Por ejemplo, puede ejecutar el comando
y se seleccionará automáticamente un método de diseño.>> BandPassFilt = design(BandPassSpecObj) BandPassFilt = FilterStructure: 'Direct-Form FIR' Arithmetic: 'double' Numerator: [1x44 double] PersistentMemory: false