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.

designfilt

Diseñar filtros digitales

Descripción

ejemplo

d = designfilt(resp,Name,Value) diseña un objeto, , con el tipo de respuesta.digitalFilterdresp Especifique el filtro aún más utilizando un conjunto de pares.Name,Value Los conjuntos de especificaciones permitidos dependen del tipo de respuesta y consisten en combinaciones de lo siguiente:resp

  • corresponde a las frecuencias en las que un filtro exhibe un comportamiento deseado.Restricciones de frecuencia Los ejemplos incluyen y .'PassbandFrequency''CutoffFrequency' (Consulte la lista completa en .)Argumentos de par nombre-valor Siempre debe especificar las restricciones de frecuencia.

  • describir el comportamiento del filtro en rangos de frecuencia particulares.Restricciones de magnitud Los ejemplos incluyen y .'PassbandRipple''StopbandAttenuation' (Consulte la lista completa en .) proporciona valores predeterminados para las restricciones de magnitud que no se especifican.Argumentos de par nombre-valordesignfilt En los diseños de magnitud arbitraria siempre debe especificar los vectores de las amplitudes deseadas.

  • .'FilterOrder' Algunos métodos de diseño permiten especificar el orden. Otros producen diseños de orden mínimo. Es decir, generan los filtros más pequeños que satisfacen las restricciones especificadas.

  • es el algoritmo utilizado para diseñar el filtro.'DesignMethod' Los ejemplos incluyen mínimos cuadrados restringidos ( ) y ventanas Kaiser ( ).'cls''kaiserwin' Para algunos conjuntos de especificaciones, hay varios métodos de diseño disponibles para elegir. En otros casos, solo puede utilizar un método para cumplir con las especificaciones deseadas.

  • son parámetros específicos de un método de diseño determinado.Opciones de diseño Algunos ejemplos son el método y la optimización de los diseños equisisisisionales de magnitud arbitraria.'Window''window''Weights' (Consulte la lista completa en .) proporciona valores predeterminados para las opciones de diseño que no se especifican.Argumentos de par nombre-valordesignfilt

  • es la frecuencia a la que opera el filtro. tiene una frecuencia de muestreo predeterminada de 2 Hz.'SampleRate'designfilt El uso de este valor equivale a trabajar con frecuencias normalizadas.

Nota

Si especifica un conjunto incompleto o incoherente de pares nombre-valor en la línea de comandos, ofrece abrir un archivo .designfiltAsistente de diseño de filtros El asistente le ayuda a diseñar el filtro y pega el código corregido en la línea de comandos.MATLAB®

Si llama desde un script o función con un conjunto incorrecto de especificaciones, emite un mensaje de error con un vínculo para abrir un archivo .designfiltdesignfiltAsistente de diseño de filtros El asistente le ayuda a diseñar el filtro, comenta el código defectuoso en la función o el script y pega el código corregido en la siguiente línea.MATLAB

  • Utilícelo en el formulario para filtrar una señal con un , .filterdataOut = filter(d,dataIn)digitalFilterd

  • Se utiliza para visualizar un , .FVTooldigitalFilterd

  • Tipo para obtener los coeficientes de a , .d.CoefficientsdigitalFilterd Para los filtros IIR, los coeficientes se expresan como secciones de segundo orden.

  • Consulte una lista de las funciones de filtrado y análisis disponibles para su uso con objetos.digitalFilterdigitalFilter

designfilt(d) le permite editar un filtro digital existente, .d Se abre un rellenado con las especificaciones del filtro, que puede modificar.Asistente de diseño de filtros Esta es la única manera de editar un objeto.digitalFilter Sus propiedades son de solo lectura.

Ejemplos

contraer todo

Diseñe un filtro FIR de paso bajo de orden mínimo con frecuencia de banda de paso normalizada

<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>2</mn>
<mn>5</mn>
<mi>π</mi>
</mrow>
</math>
rad/s, frecuencia de banda de parada
<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>3</mn>
<mn>5</mn>
<mi>π</mi>
</mrow>
</math>
rad/s, onda de banda de paso 0,5 dB y atenuación de banda de parada 65 dB. Utilice una ventana Kaiser para diseñar el filtro. Visualice su respuesta de magnitud. Utilícelo para filtrar un vector de datos aleatorios.

lpFilt = designfilt('lowpassfir','PassbandFrequency',0.25, ...          'StopbandFrequency',0.35,'PassbandRipple',0.5, ...          'StopbandAttenuation',65,'DesignMethod','kaiserwin'); fvtool(lpFilt)

dataIn = rand(1000,1); dataOut = filter(lpFilt,dataIn);

Diseñe un filtro IIR de paso bajo con el orden 8, la frecuencia de banda de paso 35 kHz y la ondulación de banda de paso 0,2 dB. Especifique una frecuencia de muestreo de 200 kHz. Visualice la respuesta de magnitud del filtro.

lpFilt = designfilt('lowpassiir','FilterOrder',8, ...          'PassbandFrequency',35e3,'PassbandRipple',0.2, ...          'SampleRate',200e3); fvtool(lpFilt)

Utilice el filtro que ha diseñado para filtrar una señal aleatoria de 1000 muestras.

dataIn = randn(1000,1); dataOut = filter(lpFilt,dataIn);

Salida de los coeficientes de filtro, expresados como secciones de segundo orden.

sos = lpFilt.Coefficients
sos = 4×6

    0.2666    0.5333    0.2666    1.0000   -0.8346    0.9073
    0.1943    0.3886    0.1943    1.0000   -0.9586    0.7403
    0.1012    0.2023    0.1012    1.0000   -1.1912    0.5983
    0.0318    0.0636    0.0318    1.0000   -1.3810    0.5090

Diseñe un filtro FIR de paso alto de orden mínimo con frecuencia de banda de parada normalizada

<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>2</mn>
<mn>5</mn>
<mi>π</mi>
</mrow>
</math>
rad/s, frecuencia de banda de paso
<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>3</mn>
<mn>5</mn>
<mi>π</mi>
</mrow>
</math>
rad/s, onda de banda de paso 0,5 dB y atenuación de banda de parada 65 dB. Utilice una ventana Kaiser para diseñar el filtro. Visualice su respuesta de magnitud. Utilícelo para filtrar 1000 muestras de datos aleatorios.

hpFilt = designfilt('highpassfir','StopbandFrequency',0.25, ...          'PassbandFrequency',0.35,'PassbandRipple',0.5, ...          'StopbandAttenuation',65,'DesignMethod','kaiserwin'); fvtool(hpFilt)

dataIn = randn(1000,1); dataOut = filter(hpFilt,dataIn);

Diseñe un filtro IIR de paso alto con el orden 8, la frecuencia de banda de paso 75 kHz y la ondulación de banda de paso 0,2 dB. Especifique una frecuencia de muestreo de 200 kHz. Visualice la respuesta de magnitud del filtro. Aplique el filtro a un vector de 1000 muestras de datos aleatorios.

hpFilt = designfilt('highpassiir','FilterOrder',8, ...          'PassbandFrequency',75e3,'PassbandRipple',0.2, ...          'SampleRate',200e3); fvtool(hpFilt)

dataIn = randn(1000,1); dataOut = filter(hpFilt,dataIn);

Diseñe un filtro FIR de paso de banda de 20o orden con frecuencia de corte más baja 500 Hz y frecuencia de corte más alta 560 Hz. La frecuencia de muestreo es de 1500 Hz. Visualice la respuesta de magnitud del filtro. Utilícelo para filtrar una señal aleatoria que contenga 1000 muestras.

bpFilt = designfilt('bandpassfir','FilterOrder',20, ...          'CutoffFrequency1',500,'CutoffFrequency2',560, ...          'SampleRate',1500); fvtool(bpFilt)

dataIn = randn(1000,1); dataOut = filter(bpFilt,dataIn);

Salida de los coeficientes de filtro.

b = bpFilt.Coefficients
b = 1×21

   -0.0113    0.0067    0.0125   -0.0445    0.0504    0.0101   -0.1070    0.1407   -0.0464   -0.1127    0.1913   -0.1127   -0.0464    0.1407   -0.1070    0.0101    0.0504   -0.0445    0.0125    0.0067   -0.0113

Diseñe un filtro IIR de paso de banda de 20o orden con una frecuencia inferior de 3 dB 500 Hz y una frecuencia de 3 dB superior 560 Hz. La frecuencia de muestreo es de 1500 Hz. Visualice la respuesta de frecuencia del filtro. Utilícelo para filtrar una señal aleatoria de 1000 muestras.

bpFilt = designfilt('bandpassiir','FilterOrder',20, ...          'HalfPowerFrequency1',500,'HalfPowerFrequency2',560, ...          'SampleRate',1500); fvtool(bpFilt)

dataIn = randn(1000,1); dataOut = filter(bpFilt,dataIn);

Diseñe un filtro FIR bandstop de 20o orden con frecuencia de corte más baja 500 Hz y frecuencia de corte más alta 560 Hz. La frecuencia de muestreo es de 1500 Hz. Visualice la respuesta de magnitud del filtro. Utilícelo para filtrar 1000 muestras de datos aleatorios.

bsFilt = designfilt('bandstopfir','FilterOrder',20, ...          'CutoffFrequency1',500,'CutoffFrequency2',560, ...          'SampleRate',1500); fvtool(bsFilt)

dataIn = randn(1000,1); dataOut = filter(bsFilt,dataIn);

Diseñe un filtro IIR de parada de banda de 20o orden con una frecuencia inferior de 3 dB 500 Hz y una frecuencia de 3 dB superior 560 Hz. La frecuencia de muestreo es de 1500 Hz. Visualice la respuesta de magnitud del filtro. Utilícelo para filtrar 1000 muestras de datos aleatorios.

bsFilt = designfilt('bandstopiir','FilterOrder',20, ...          'HalfPowerFrequency1',500,'HalfPowerFrequency2',560, ...          'SampleRate',1500); fvtool(bsFilt)

dataIn = randn(1000,1); dataOut = filter(bsFilt,dataIn);

Diseñe un filtro diferenciador de banda completa del pedido 7. Mostrar su respuesta de fase cero. Utilícelo para filtrar un vector de 1000 muestras de datos aleatorios.

dFilt = designfilt('differentiatorfir','FilterOrder',7); fvtool(dFilt,'MagnitudeDisplay','Zero-phase')

dataIn = randn(1000,1); dataOut = filter(dFilt,dataIn);

Diseñar un transformador Hilbert de orden 18. Especifique un ancho de transición normalizado de

<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>2</mn>
<mn>5</mn>
<mi>π</mi>
</mrow>
</math>
rad/s. Visualice en unidades lineales la respuesta de magnitud del filtro. Utilícelo para filtrar un vector de 1000 muestras de datos aleatorios.

hFilt = designfilt('hilbertfir','FilterOrder',18,'TransitionWidth',0.25); fvtool(hFilt,'MagnitudeDisplay','magnitude')

dataIn = randn(1000,1); dataOut = filter(hFilt,dataIn);

Se le da una señal muestreada a 1 kHz. Diseñe un filtro que detenga las frecuencias entre 100 Hz y 350 Hz y las frecuencias superiores a 400 Hz. Especifique un orden de filtro de 60. Visualice la respuesta de frecuencia del filtro. Utilícelo para filtrar una señal aleatoria de 1000 muestras.

mbFilt = designfilt('arbmagfir','FilterOrder',60, ...          'Frequencies',0:50:500,'Amplitudes',[1 1 1 0 0 0 0 1 1 0 0], ...          'SampleRate',1000); fvtool(mbFilt)

dataIn = randn(1000,1); dataOut = filter(mbFilt,dataIn);

Argumentos de entrada

contraer todo

Filtrar respuesta y tipo, especificado sin vector de caracteres o escalar de cadena. Haga clic en uno de los valores posibles para expandir una tabla de conjuntos de especificaciones permitidos.resp

 'lowpassfir'

 'lowpassiir'

 'highpassfir'

 'highpassiir'

 'bandpassfir'

 'bandpassiir'

 'bandstopfir'

 'bandstopiir'

 'differentiatorfir'

 'hilbertfir'

 'arbmagfir'

Tipos de datos: char | string

Filtro digital, especificado como un objeto generado por .digitalFilterdesignfilt Utilice esta entrada para cambiar las especificaciones de un archivo .digitalFilter

Argumentos de par nombre-valor

Especifique pares opcionales separados por comas de argumentos. es el nombre del argumento y es el valor correspondiente. deben aparecer entre comillas.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como .Name1,Value1,...,NameN,ValueN

Ejemplo: es suficiente para especificar un filtro FIR de paso bajo.'FilterOrder',20,'CutoffFrequency',0.4

No todas las combinaciones de pares son válidas.Name,Value Las combinaciones válidas dependen de la respuesta del filtro que necesite y de las restricciones de frecuencia y magnitud del diseño.

Orden de filtro

contraer todo

Orden de filtro, especificado como el par separado por comas que consta de y un escalar entero positivo.'FilterOrder'

Tipos de datos: double

Orden del numerador de un diseño IIR, especificado como el par separado por comas que consta de un escalar entero positivo.'NumeratorOrder'

Tipos de datos: double

Orden de denominador de un diseño IIR, especificado como el par separado por comas que consta de un escalar entero positivo.'DenominatorOrder'

Tipos de datos: double

Restricciones de frecuencia

contraer todo

Frecuencia de banda de paso, especificada como el par separado por comas que consta de un escalar positivo.'PassbandFrequency' El valor de frecuencia debe estar dentro del rango Nyquist.

es la frecuencia de banda de paso más baja para un diseño de paso de banda o bandstop.'PassbandFrequency1'

es la frecuencia de banda de paso más alta para un diseño de paso de banda o bandstop.'PassbandFrequency2'

Tipos de datos: double

Frecuencia de banda de parada, especificada como el par separado por comas que consta de un escalar positivo.'StopbandFrequency' El valor de frecuencia debe estar dentro del rango Nyquist.

es la frecuencia de banda de parada más baja para un diseño de paso de banda o bandstop'StopbandFrequency1'

es la frecuencia de banda de parada más alta para un diseño de paso de banda o bandstop.'StopbandFrequency2'

Tipos de datos: double

Frecuencia de 6 dB, especificada como el par separado por comas que consta de un escalar positivo.'CutoffFrequency' El valor de frecuencia debe estar dentro del rango Nyquist.

es la frecuencia más baja de 6 dB para un diseño de paso de banda o bandstop.'CutoffFrequency1'

es la frecuencia más alta de 6 dB para un diseño de paso de banda o bandstop.'CutoffFrequency2'

Tipos de datos: double

Frecuencia de 3 dB, especificada como el par separado por comas que consta de un escalar positivo.'HalfPowerFrequency' El valor de frecuencia debe estar dentro del rango Nyquist.

es la frecuencia más baja de 3 dB para un diseño de paso de banda o bandstop.'HalfPowerFrequency1'

es la frecuencia de 3 dB más alta para un diseño de paso de banda o bandstop.'HalfPowerFrequency2'

Tipos de datos: double

Ancho de la región de transición entre passband y stopband para un transformador Hilbert, especificado como el par separado por comas que consta de un escalar positivo.'TransitionWidth'

Tipos de datos: double

Frecuencias de respuesta, especificadas como el par separado por comas que consta de un vector y un vector.'Frequencies' Utilice esta variable para enumerar las frecuencias en las que un filtro de respuesta de magnitud arbitraria tiene amplitudes deseadas. Las frecuencias deben aumentar de forma monótona y estar dentro del rango Nyquist. El primer elemento del vector debe ser 0 o fs/2Dónde fs es la frecuencia de muestreo, y su último elemento debe ser fs/2. Si no especifica una frecuencia de muestreo, utiliza el valor predeterminado de 2 Hz.designfilt

Tipos de datos: double

Número de bandas en un diseño multibanda, especificado como el par separado por comas que consta de y un escalar entero positivo no mayor que 10.'NumBands'

Tipos de datos: double

Frecuencias de respuesta multibanda, especificadas como pares separados por comas que consisten en un vector numérico y un. Dónde'BandFrequenciesi''BandFrequenciesi' i de 1 a , es un vector que contiene las frecuencias en las que elNumBands ila banda de un diseño multibanda tiene los valores deseados, . puede ser como máximo 10.'BandAmplitudesi'NumBands Las frecuencias deben estar dentro del rango Nyquist y deben especificarse en orden monotonímio. Las bandas de frecuencia adyacentes deben tener la misma amplitud en su unión.

Tipos de datos: double

Restricciones de magnitud

contraer todo

Ondulación de banda de paso, especificada como el par separado por comas que consta de y un escalar positivo expresado en decibelios.'PassbandRipple'

es la ondulación de banda de paso de banda inferior para un diseño de bandstop.'PassbandRipple1'

es la ondulación de banda de paso de banda más alta para un diseño de bandstop.'PassbandRipple2'

Tipos de datos: double

Atenuación de banda de parada, especificada como el par separado por comas que consta de y un escalar positivo expresado en decibelios.'StopbandAttenuation'

es la atenuación de la banda inferior para un diseño de paso de banda.'StopbandAttenuation1'

es la atenuación de la banda de parada de banda más alta para un diseño de paso de banda.'StopbandAttenuation2'

Tipos de datos: double

Amplitudes de respuesta deseadas de un filtro de respuesta de magnitud arbitraria, especificadas como el par separado por comas que consta de un vector y un vector.'Amplitudes' Exprese las amplitudes en unidades lineales. El vector debe tener la misma longitud que .'Frequencies'

Tipos de datos: double

Amplitudes de respuesta multibanda, especificadas como pares separados por comas que consisten en un vector numérico y un. Dónde'BandAmplitudesi''BandAmplitudesi' i de 1 a , es un vector que contiene las amplitudes deseadas en elNumBands ide una banda de diseño multibanda. puede ser como máximo 10.NumBands Exprese las amplitudes en unidades lineales. debe tener la misma longitud que .'BandAmplitudesi''BandFrequenciesi' Las bandas de frecuencia adyacentes deben tener la misma amplitud en su unión.

Tipos de datos: double

Método de diseño

contraer todo

Método de diseño, especificado como el par separado por comas que consta de un vector de caracteres o un escalar de cadena.'DesignMethod' La elección del método de diseño depende del conjunto de restricciones de frecuencia y magnitud que especifique.

  • diseña un filtro Butterworth IIR.'butter' Los filtros Butterworth tienen una respuesta de frecuencia monotónica suave que es máximamente plana en la banda de paso. Sacrifican la pendiente por la planitud.

  • diseña un filtro Chebyshev tipo I IIR.'cheby1' Los filtros Chebyshev tipo I tienen una respuesta de frecuencia que es equisiva en la banda de paso y máximamente plana en la banda de parada. Su ondulación de banda de paso aumenta con el aumento de la pendiente del desbocado.

  • diseña un filtro Chebyshev tipo II IIR.'cheby2' Los filtros Chebyshev tipo II tienen una respuesta de frecuencia que es máximamente plana en la banda de paso y equiripple en la banda de parada.

  • diseña un filtro FIR utilizando mínimos cuadrados restringidos.'cls' El método minimiza la discrepancia entre una función lineal arbitraria especificada por pieza y la respuesta de magnitud del filtro. Al mismo tiempo, le permite establecer restricciones en la ondulación de banda de paso y la atenuación de la banda de parada.

  • diseña un filtro IIR elíptico.'ellip' Los filtros elípticos tienen una respuesta de frecuencia que es equisinada tanto en la banda de paso como en la banda de parada.

  • diseña un filtro FIR equisioso utilizando el algoritmo Parks-McClellan.'equiripple' Los filtros Equiripple tienen una respuesta de frecuencia que minimiza la magnitud máxima de ondulación en todas las bandas.

  • diseña un filtro FIR de respuesta de magnitud arbitraria mediante el muestreo de la respuesta de frecuencia uniformemente y tomando la transformación inversa de Fourier.'freqsamp'

  • diseña un filtro FIR utilizando el método de ventana Kaiser.'kaiserwin' El método trunca la respuesta de impulso de un filtro ideal y utiliza una ventana Kaiser para atenuar las oscilaciones de truncamiento resultantes.

  • diseña un filtro FIR utilizando mínimos cuadrados.'ls' El método minimiza la discrepancia entre una función lineal arbitraria especificada por pieza y la respuesta de magnitud del filtro.

  • diseña un filtro FIR máximo plano.'maxflat' Estos filtros tienen una respuesta de frecuencia monotónica suave que es máximamente plana en la banda de paso.

  • utiliza una aproximación de mínimos cuadrados para calcular los coeficientes de filtro y luego suaviza la respuesta de impulso con .'window''Window'

Tipos de datos: char | string

Opciones del método de diseño

contraer todo

Ventana, especificada como el par separado por comas que consta de y un vector de longitud'Window' N + 1Dónde N es el orden del filtro. También se puede emparejar con un nombre de ventana o identificador de función que especifique la función utilizada para generar la ventana.'Window' Cualquier función de este tipo debe tomar N + 1 como primera entrada. Se pueden pasar entradas adicionales especificando una matriz de celdas. De forma predeterminada, es un vector vacío para el método de diseño y para el método de diseño.'Window''freqsamp'@hamming'window'

Para obtener una lista de las ventanas disponibles, consulte .Windows

Ejemplo: y ambos especifican una ventana Hann para utilizar con un filtro de orden.'Window',hann(N+1)'Window',(1-cos(2*pi*(0:N)'/N))/2N

Ejemplo: especifica una ventana Hamming del orden requerido.'Window','hamming'

Ejemplo: le permite definir su propia función de ventana.'Window',@mywindow

Ejemplo: especifica una ventana Kaiser del orden requerido con el parámetro de forma 0.5.'Window',{@kaiser,0.5}

Tipos de datos: double | char | string | function_handle | cell

Banda para que coincida exactamente, especificada como el par separado por comas que consta de y , , o . solo está disponible para el método de diseño elíptico, donde es el valor predeterminado. es el valor predeterminado para los métodos y. es el valor predeterminado para .'MatchExactly''stopband''passband''both''both''stopband''butter''cheby2''passband''cheby1'

Tipos de datos: char | string

Desplazamiento de banda de paso, especificado como el par separado por comas que consta de y un escalar positivo expresado en decibelios. especifica la ganancia del filtro en la banda de paso.'PassbandOffset''PassbandOffset'

Ejemplo: da como resultado un filtro con ganancia unitaria en la banda de paso.'PassbandOffset',0

Ejemplo: da como resultado un filtro con una ganancia de banda de paso de 2 dB o 1.259.'PassbandOffset',2

Tipos de datos: double

Escalar banda de paso, especificada como el par separado por comas que consta de y un escalar lógico.'ScalePassband' Cuando se establece en , la banda de paso se escala, después de la ventana, de modo que el filtro tiene ganancia de unidad a una frecuencia cero.'ScalePassband'true

Ejemplo: ayudar a especificar un filtro cuya respuesta de magnitud a la frecuencia cero es exactamente 0 dB.'Window',{@kaiser,0.1},'ScalePassband',true Este no es el caso cuando se especifica .'ScalePassband',false Para comprobarlo, visualice el filtro con y haga zoom.fvtool

Tipos de datos: logical

Fase cero, especificada como el par separado por comas que consta de un escalar lógico.'ZeroPhase' Cuando se establece en , la respuesta de fase cero del filtro resultante siempre es positiva.'ZeroPhase'true Esto le permite realizar la factorización espectral en el resultado y obtener un filtro de fase mínima a partir de él.

Tipos de datos: logical

Peso de optimización de banda de paso, especificado como el par separado por comas que consta de y un escalar positivo.'PassbandWeight'

es el peso de optimización de banda de paso de banda inferior para un diseño FIR bandstop.'PassbandWeight1'

es el peso de optimización de banda de paso de banda más alta para un diseño FIR bandstop.'PassbandWeight2'

Tipos de datos: double

Peso de optimización de banda de parada, especificado como el par separado por comas que consta de un escalar positivo.'StopbandWeight'

es el peso de optimización de banda inferior para un diseño FIR de paso de banda.'StopbandWeight1'

es el peso de optimización de banda de mayor banda para un diseño FIR de paso de banda.'StopbandWeight2'

Tipos de datos: double

Ponderaciones de optimización, especificadas como el par separado por comas que consta de un escalar positivo o un vector de la misma longitud que .'Weights''Amplitudes'

Tipos de datos: double

Pesos multibanda, especificados como pares separados por comas que consisten en y un conjunto de escalares positivos o de vectores. Dónde'BandWeightsi''BandWeightsi' i del 1 al , es un escalar o vector que contiene los pesos de optimización de laNumBands ide una banda de diseño multibanda. Si se especifica como vector, debe tener la misma longitud que .'BandWeightsi''BandAmplitudesi'

Tipos de datos: double

Tasa de muestreo

contraer todo

Frecuencia de muestreo, especificada como el par separado por comas que consta de y un escalar positivo expresado en hercios.'SampleRate' Para trabajar con frecuencias normalizadas, establezca en 2 o simplemente impórtelo.'SampleRate'

Tipos de datos: double

Argumentos de salida

contraer todo

Filtro digital, devuelto como un objeto.digitalFilter

Más acerca de

contraer todo

Asistente de diseño de filtros

Si especifica un conjunto incompleto o incoherente de parámetros de diseño, ofrece abrir un Asistente de diseño de filtro.designfilt

(En la descripción del argumento para hay una lista completa de conjuntos de especificaciones válidos para todos los tipos de respuesta disponibles.)resp

El asistente se comporta de forma diferente si se llama a la línea de comandos o dentro de un script o función.designfilt

Asistente de diseño de filtros en la línea de comandos

Se le da una señal muestreada a 2 kHz. Se le pide que diseñe un filtro FIR de paso bajo que suprima componentes de frecuencia superiores a 650 Hz. La "frecuencia de corte" suena como un buen candidato para un parámetro de especificación. En la línea de comandos, escriba lo siguiente.MATLAB

Fsamp = 2e3; Fctff = 650; dee = designfilt('lowpassfir','CutoffFrequency',Fctff, ...                  'SampleRate',Fsamp);

Algo parece estar mal porque este cuadro de diálogo aparece en la pantalla.

Haga clic y obtenga un nuevo cuadro de diálogo que ofrece generar código.Yes Verá que las variables definidas anteriormente se han insertado donde se esperaba.

Después de explorar algunas de las opciones ofrecidas, decide probar el filtro corregido. Haga clic y obtenga el siguiente código en la línea de comandos.OK

dee = designfilt('lowpassfir', 'FilterOrder', 10, ...                  'CutoffFrequency', Fctff, 'SampleRate', Fsamp);

Al escribir el nombre del filtro se reitera la información del cuadro de diálogo.

dee 
dee =   digitalFilter with properties:      Coefficients: [1x11 double]    Specifications:     FrequencyResponse: 'lowpass'       ImpulseResponse: 'fir'            SampleRate: 2000           FilterOrder: 10       CutoffFrequency: 650          DesignMethod: 'window'  Use fvtool to visualize filter  Use filter function to filter data

Se invoca y obtiene una gráfica de la respuesta de frecuencia.FVTooldee

fvtool(dee)

El corte no se ve particularmente nítido. La respuesta es superior a 40 dB para la mayoría de las frecuencias. Recuerdaque que el asistente tenía la opción de configurar una "restricción de magnitud" llamada "atenuación de la banda de parada". Abra el asistente llamando con el nombre del filtro como entrada.designfilt

designfilt(dee)

Haga clic en el Magnitude constraints menú desplegable y seleccione Passband ripple and stopband attenuation. Usted ve que el método de diseño ha cambiado de Window Para FIR constrained least-squares. El valor predeterminado para la atenuación es 60 dB, que es mayor que 40. Haga clic y visualice el filtro resultante.OK

dee = designfilt('lowpassfir', 'FilterOrder', 10, ...                  'CutoffFrequency', Fctff, ...                  'PassbandRipple', 1, 'StopbandAttenuation', 60, ...                  'SampleRate', Fsamp); fvtool(dee)

El corte todavía no se ve afilado. La atenuación es de hecho 60 dB, pero para frecuencias superiores a 900 Hz.

Invoque de nuevo con el filtro como entrada.designfilt

designfilt(dee)

El asistente reaparece.

Para reducir la distinción entre frecuencias aceptadas y rechazadas, aumente el orden del filtro o cambie Frequency constraints De Cutoff (6dB) frequency Para Passband and stopband frequencies. Si cambia el orden del filtro de 10 a 50, obtendrá un filtro más nítido.

dee = designfilt('lowpassfir', 'FilterOrder', 50, ...                  'CutoffFrequency', 650, ...                  'PassbandRipple', 1, 'StopbandAttenuation', 60, ...                  'SampleRate', 2000); fvtool(dee)

Una pequeña experimentación muestra que puede obtener un filtro similar estableciendo las frecuencias de banda de paso y banda de parada respectivamente en 600 Hz y 700 Hz.

dee = designfilt('lowpassfir', 'PassbandFrequency', 600, ...                  'StopbandFrequency', 700, ...                  'PassbandRipple', 1, 'StopbandAttenuation', 60, ...                  'SampleRate', 2000); fvtool(dee)

Asistente de diseño de filtro en un script o función

Se le da una señal muestreada a 2 kHz. Se le pide que diseñe un filtro de paso alto que detenga las frecuencias por debajo de 700 Hz. No te importa la fase de la señal, y necesitas trabajar con un filtro de orden bajo. Por lo tanto, un filtro IIR parece adecuado. No está seguro de qué orden de filtro es mejor, por lo que escribe una función que acepta el orden como entrada. Abra el Editor y cree el archivo.MATLAB

function dataOut = hipassfilt(N,dataIn) hpFilter = designfilt('highpassiir','FilterOrder',N); dataOut = filter(hpFilter,dataIn); end

Para probar su función, cree una señal compuesta de dos sinusoides con frecuencias 500 y 800 Hz y genere muestras para 0.1 s. Un filtro de 5o orden parece razonable como una suposición inicial. Cree un script llamado .driveHPfilt.m

% script driveHPfilt.m Fsamp = 2e3; Fsm = 500; Fbg = 800; t = 0:1/Fsamp:0.1; sgin = sin(2*pi*Fsm*t)+sin(2*pi*Fbg*t); Order = 5; sgout = hipassfilt(Order,sgin);

Al ejecutar el script en la línea de comandos, recibirá un mensaje de error.

El mensaje de error le da la opción de abrir un asistente para corregir el código.MATLAB Haga clic para obtener el Asistente de diseño de filtro en la pantalla.Click here

Usted ve el problema: No especificó la restricción de frecuencia. También olvidó establecer una frecuencia de muestreo. Después de experimentar, encontrará que puede especificar comoFrequency units Hz, igual a 700 Hz, e igual a 2000 Hz.Passband frequencyInput Fs Los cambios deDesign method Butterworth Para Chebyshev type I. Haga clic y obtenga lo siguiente.OK

El asistente ha identificado correctamente el archivo al que se llama .designfilt Haga clic para aceptar el cambio.Yes La función tiene el código corregido.MATLAB

function dataOut = hipassfilt(N,dataIn) % hpFilter = designfilt('highpassiir','FilterOrder',N); hpFilter = designfilt('highpassiir', 'FilterOrder', N, ...                 'PassbandFrequency', 700, 'PassbandRipple', 1, ...                 'SampleRate', 2000); dataOut = filter(hpFilter,dataIn); end

Ahora puede ejecutar el script con diferentes valores del orden del filtro. En función de las restricciones de diseño, puede cambiar el conjunto de especificaciones.

Preferencias del Asistente de diseño de filtros

Puede configurar nunca para ofrecer el Asistente de diseño de filtros.designfilt Esta acción establece una preferencia que se puede desajustar con:MATLABsetpref

  • Solía ofrecerse el asistente cada vez.setpref('dontshowmeagain','filterDesignAssistant',false) Con este comando, puede obtener el asistente de nuevo después de haberlo deshabilitado.

  • Se utiliza para desactivar el asistente de forma permanente.setpref('dontshowmeagain','filterDesignAssistant',true) También puede hacer clic en el cuadro de diálogo inicial.Do not show this message again

Puede configurar para corregir siempre las especificaciones defectuosas sin preguntar.designfilt Esta acción establece una preferencia que se puede desestablecer mediante:MATLABsetpref

  • Se usa para corregir el código sin pedir confirmación.setpref('dontshowmeagain','filterDesignAssistantCodeCorrection',false)designfiltMATLAB También puede hacer clic en el cuadro de diálogo de confirmación.Always accept

  • Se usa para asegurarse de que corrige el código solo cuando confirma que desea los cambios.setpref('dontshowmeagain','filterDesignAssistantCodeCorrection',true)designfiltMATLAB Con este comando, puede deshacer el efecto de haber hecho clic en el cuadro de diálogo de confirmación.Always accept

Solución de problemas

Hay algunos casos en los que, dado un conjunto no válido de especificaciones, no ofrece un Asistente de diseño de filtro, ya sea a través de un cuadro de diálogo o a través de un vínculo en un mensaje de error.designfilt

  • No se le ofrecerá un asistente si utiliza la evaluación de sección de código, ya sea desde la tira de herramientas o pulsando .MATLABCtrl+Intro (Consulte para obtener más información.)Dividir el archivo en secciones de código

  • No se le ofrece un asistente si el código tiene varias llamadas a , al menos una de esas llamadas es incorrecta, ydesignfilt

    • Pegue el código en la línea de comandos y ejecútelo presionando .Entrar

    • Seleccione el código en el Editor y ejecútelo pulsando .F9

  • No se le ofrecerá un asistente si se ejecuta utilizando una función anónima.designfilt (Consulte para obtener más información.)Anonymous Functions Por ejemplo, esta entrada ofrece un asistente. Esta entrada no lo hace.

    d = designfilt('lowpassfir','CutoffFrequency',0.6)
    myFilterDesigner = @designfilt; d = myFilterDesigner('lowpassfir','CutoffFrequency',0.6)

  • No se le ofrecerá un asistente si ejecuta utilizando .designfilteval Por ejemplo, esta entrada ofrece un asistente. Esta entrada no lo hace.

    d = designfilt('lowpassfir','CutoffFrequency',0.6)
    myFilterDesigner = ...     sprintf('designfilt(''%s'',''CutoffFrequency'',%f)', ...                         'lowpassfir',0.6); d = eval(myFilterDesigner)

El Asistente de diseño de filtros requiere que se ejecute el software y el escritorio.Java®MATLAB No se admite si se ejecutan con las opciones , , u.MATLAB-nojvm-nodisplay-nodesktop

Introducido en R2014a