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ña filtros digitales

Descripción

ejemplo

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

  • corresponden a las frecuencias a las que un filtro exhibe un comportamiento deseado.Frequency constraints Los ejemplos incluyen y.'PassbandFrequency''CutoffFrequency' (Vea la lista completa debajo.)Argumentos de par nombre-valor Siempre debe especificar las restricciones de frecuencia.

  • describir el comportamiento del filtro en rangos de frecuencias particulares.Magnitude constraints Los ejemplos incluyen y.'PassbandRipple''StopbandAttenuation' (Vea la lista completa debajo.) proporciona valores predeterminados para las restricciones de magnitud no especificadas.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 le 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' Algunos ejemplos son los mínimos cuadrados restringidos () y Kaiser ventanas ().'cls''kaiserwin' Para algunos conjuntos de especificaciones, hay varios métodos de diseño disponibles para elegir. En otros casos, puede utilizar solo un método para cumplir las especificaciones deseadas.

  • son parámetros específicos de un método de diseño determinado.Design options Los ejemplos incluyen para el método y la optimización para los diseños de equiripple de magnitud arbitraria.'Window''window''Weights' (Vea la lista completa debajo.) proporciona valores predeterminados para las opciones de diseño no especificadas.Argumentos de par nombre-valordesignfilt

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

Nota

Si especifica un conjunto incompleto o inconsistente de pares nombre-valor en la línea de comandos, ofrece abrir un.designfiltFilter Design Assistant 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 una función con un conjunto incorrecto de especificaciones, emite un mensaje de error con un enlace para abrir una.designfiltdesignfiltFilter Design Assistant 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

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

  • Utilízalo para visualizar un,.fvtooldigitalFilterd

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

  • Consulte para obtener 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 luego se puede modificar.Filter Design Assistant Esta es la única manera en la que puede editar un objeto.digitalFilter De lo contrario, 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
<math display="block">
<mrow>
<mn>0</mn>
<mo>.</mo>
<mn>3</mn>
<mn>5</mn>
<mi>π</mi>
</mrow>
</math>
rad/s, ondulación de banda de paso 0,5 dB, y atenuación de banda de stopband 65 dB. Utilice una ventana de Kaiser para diseñar el filtro. Visualice su respuesta de magnitud. Utilílese 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 la orden 8, frecuencia de banda de paso 35 kHz y ondulación de banda de paso 0,2 dB. Especifique una frecuencia de muestreo de 200 kHz. Visualice la respuesta de magnitud del filtro. Utilílelo para filtrar una señal aleatoria de 1000 muestras.

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

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

Salida de los coeficientes del filtro, expresado 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 suspensión 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, ondulación de banda de paso 0,5 dB, y atenuación de banda de stopband 65 dB. Utilice una ventana de Kaiser para diseñar el filtro. Visualice su respuesta de magnitud. Se usa 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 la orden 8, frecuencia de banda de paso 75 kHz y 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 20 órdenes con una frecuencia de corte menor de 500 Hz y una frecuencia de corte mayor de 560 Hz. La frecuencia de muestreo es de 1500 Hz. Visualice la respuesta de magnitud del filtro. Utilílelo 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 del 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 20 órdenes con una frecuencia inferior de 3 dB de 500 Hz y una frecuencia de 3 dB superior a 560 Hz. La frecuencia de muestreo es de 1500 Hz. Visualice la respuesta de frecuencia del filtro. Utilílelo 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 de parada de banda de 20 órdenes con una frecuencia de corte menor de 500 Hz y una frecuencia de corte mayor de 560 Hz. La frecuencia de muestreo es de 1500 Hz. Visualice la respuesta de magnitud del filtro. Se usa 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 banda de 20 órdenes con una frecuencia inferior de 3 dB de 500 Hz y una frecuencia de 3 dB superior a 560 Hz. La frecuencia de muestreo es de 1500 Hz. Visualice la respuesta de magnitud del filtro. Se usa 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 de la orden 7. Mostrar su respuesta de fase cero. Se usa 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ñe un transformador Hilbert de la 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. Se usa 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 frecuencias superiores a 400 Hz. Especifique un orden de filtro de 60. Visualice la respuesta de frecuencia del filtro. Utilílelo 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

Tipo y respuesta de filtro, especificadas como un vector de caracteres o un 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 una existente.digitalFilter

Argumentos de par nombre-valor

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

Ejemplo: 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 de filtro que necesite y de las restricciones de frecuencia y magnitud de su diseño.

Orden de filtro

contraer todo

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

Tipos de datos: double

Orden 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

Denominador orden de un diseño IIR, especificado como el par separado por comas que consta de y 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 la frecuencia debe estar dentro de la gama Nyquist.

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

es la frecuencia de banda de paso más alta para un pase de banda o un diseño de supresión.'PassbandFrequency2'

Tipos de datos: double

Frecuencia de banda de detención, especificada como el par separado por comas que consta de un escalar positivo.'StopbandFrequency' El valor de la frecuencia debe estar dentro de la gama Nyquist.

es la menor frecuencia de banda de suspensión para un pase de banda o un diseño de supresión'StopbandFrequency1'

es la frecuencia de banda de suspensión más alta para un diseño de paso de banda o supresión.'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 la frecuencia debe estar dentro de la gama Nyquist.

es la menor frecuencia de 6 dB para un paso de banda o diseño de supresión.'CutoffFrequency1'

es la mayor frecuencia de 6 dB para un paso de banda o diseño de supresión.'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 la frecuencia debe estar dentro de la gama Nyquist.

es la menor frecuencia de 3 dB para un paso de banda o diseño de supresión.'HalfPowerFrequency1'

es la mayor frecuencia de 3 dB para un paso de banda o diseño de banda.'HalfPowerFrequency2'

Tipos de datos: double

Ancho de la región de transición entre la banda de paso y la banda de suspensión para un transformador de 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 y un vector.'Frequencies' Utilice esta variable para enumerar las frecuencias en las que un filtro de respuesta de magnitud arbitraria ha deseado amplitudes. Las frecuencias deben aumentar monótona y estar dentro de la gama 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 un escalar entero positivo no mayor que 10.'NumBands'

Tipos de datos: double

Frecuencias de respuesta multibanda, especificadas como pares separados por comas que constan de un vector numérico. Dónde'BandFrequenciesi''BandFrequenciesi' i se ejecuta desde 1 hasta, es un vector que contiene las frecuencias en las que elNumBands ibanda de un diseño multibanda tiene los valores deseados,. puede ser como máximo 10.'BandAmplitudesi'NumBands Las frecuencias deben estar dentro de la gama Nyquist y deben especificarse en orden monotónicamente creciente. Las bandas de frecuencias adyacentes deben tener la misma amplitud en su cruce.

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 supresión.'PassbandRipple1'

es la ondulación de banda de paso de banda superior para un diseño de supresión.'PassbandRipple2'

Tipos de datos: double

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

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

es la atenuación de banda de suspensión de banda superior 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, especificado como el par separado por comas que consta de 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 constan de un vector numérico. Dónde'BandAmplitudesi''BandAmplitudesi' i se ejecuta desde 1 hasta, es un vector que contiene las amplitudes deseadas en elNumBands ibanda de un 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 frecuencias adyacentes deben tener la misma amplitud en su cruce.

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 IIR de Butterworth.'butter' Los filtros Butterworth tienen una respuesta de frecuencia monótona suave que es máxima plana en la banda de paso. Sacrifican la inclinación por la planitud.

  • diseña un filtro de IIR Chebyshev tipo I.'cheby1' Los filtros de tipo I de Chebyshev tienen una respuesta de frecuencia que es equiripple en la banda de paso y máxima plana en la banda de suspensión. La ondulación de su banda de paso aumenta con el aumento de la inclinación.

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

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

  • diseña un filtro de IIR elíptico.'ellip' Los filtros elípticas tienen una respuesta de frecuencia que es equiripple tanto en la banda de paso como en la banda de suspensión.

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

  • diseña un filtro FIR de respuesta de magnitud arbitraria muestreando la respuesta de frecuencia uniformemente y tomando la transformada 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 de Kaiser para atenuar las oscilaciones de truncamiento resultantes.

  • diseña un filtro FIR usando los mínimos cuadrados.'ls' El método minimiza la discrepancia entre una función lineal de piecewise-linear especificada y la respuesta de magnitud del filtro.

  • diseña un filtro FIR máximo plano.'maxflat' Estos filtros tienen una respuesta de frecuencia monótona lisa que es máxima plana en la banda de paso.

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

Tipos de datos: char | string

Opciones de método de diseño

contraer todo

Ventana, especificada como el par separado por comas que consta de un vector de longitud'Window' N + 1Dónde N es el orden de filtro. también se pueden emparejar con un nombre de ventana o un identificador de función que especifica 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 usar con un filtro de orden.'Window',hann(N+1)'Window',(1-cos(2*pi*(0:N)'/N))/2N

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

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

Ejemplo: especifica una ventana de 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 que coincida exactamente, especificada como el par separado por comas que consta de y cualquiera, 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 un escalar positivo expresado en decibelios. Especifica la ganancia de 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

Escala de la 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, por lo que el filtro tiene ganancia de unidad en la frecuencia cero.'ScalePassband'true

Ejemplo: ayuda para especificar un filtro cuya magnitud de respuesta en 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 el zoom y acérquelo.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 factorización espectral en el resultado y obtener un filtro de fase mínima de ella.

Tipos de datos: logical

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

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

es el peso de optimización de banda de paso de banda superior para un diseño de FIR de supresión.'PassbandWeight2'

Tipos de datos: double

Peso de optimización de banda de detención, 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 más alta para un diseño FIR de paso de banda.'StopbandWeight2'

Tipos de datos: double

Pesos de optimización, especificados 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 constan de un conjunto de escalares positivos o de vectores. Dónde'BandWeightsi''BandWeightsi' i se ejecuta desde 1 a, es un escalar o un vector que contiene los pesos de optimización delNumBands ibanda de un diseño multibanda. Si se especifica como un vector, debe tener la misma longitud que.'BandWeightsi''BandAmplitudesi'

Tipos de datos: double

Frecuencia de muestreo

contraer todo

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

Tipos de datos: double

Argumentos de salida

contraer todo

Filtro digital, devuelto como objeto.digitalFilter

Más acerca de

contraer todo

Filter Design Assistant

Si especifica un conjunto incompleto o inconsistente de parámetros de diseño, ofrece abrir un asistente de diseño de filtros.designfilt

(En la descripción del argumento 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 en la línea de comandos o dentro de una secuencia de comandos o función.designfilt

Filter Design Assistant 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 los 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.

Hacer clic y obtener un nuevo cuadro de diálogo que ofrece para generar código.Yes Verá que las variables que definió antes se han insertado donde se esperaba.

Después de explorar algunas de las opciones ofrecidas, usted 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

Invocas y obtienes una trama de respuesta de frecuencia.fvtooldee

fvtool(dee)

El corte no se ve particularmente afilado. La respuesta está por encima de 40 dB para la mayoría de las frecuencias. Usted recuerda que el ayudante tenía una opción para configurar una "restricción de magnitud" llamada la "atenuación de la banda stopband". 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. Verá 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 más alto 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 nítido. La atenuación es de hecho 60 dB, pero para las frecuencias por encima de 900 Hz.

Vuelva a invocar con el filtro como entrada.designfilt

designfilt(dee)

El ayudante 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 de 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)

Un poco de experimentación muestra que se puede obtener un filtro similar estableciendo las frecuencias de banda de paso y de banda de parada respectivamente a 600 Hz y 700 Hz.

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

Filter Design Assistant en una secuencia de comandos 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 escribir una función que acepte 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 por dos sinusoides con frecuencias 500 y 800 Hz y genere muestras para 0,1 s. Un filtro de 5º 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);

Cuando se ejecuta el script en la línea de comandos, se obtiene 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 ha especificado la restricción de frecuencia. También se olvidó de 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 donde 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 de filtro. En función de las restricciones de diseño, puede cambiar el conjunto de especificaciones.

Preferencias del asistente de diseño de filtro

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

  • Utilizar para ser ofrecido el asistente cada vez.setpref('dontshowmeagain','filterDesignAssistant',false) Con este comando, puede obtener el Asistente de nuevo después de haberlo desactivado.

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

Puede establecer siempre corregir las especificaciones defectuosas sin preguntar.designfilt Esta acción establece una preferencia que se puede anular mediante el uso de: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

  • Utilíla para asegurarse de que corrige el código solo cuando confirme 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 de especificaciones no válido, 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 ofrece un asistente si utiliza la evaluación de la sección de código, ya sea desde la ToolStrip o presionando.MATLABCtrl + Intro (Ver para más información.)Divida el archivo en secciones de código (MATLAB)

  • 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 ofrece un asistente si se ejecuta con una función anónima.designfilt (Ver para más información.)Funciones anónimas (MATLAB) 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 ofrece un asistente si se 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 el software y el escritorio se ejecuten.Java®MATLAB No se admite si se ejecuta con las opciones, o bien.MATLAB-nojvm-nodisplay-nodesktop

Introducido en R2014a