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.

bandpass

Señales de filtro de paso de banda

Descripción

y = bandpass(x,wpass) filtra la señal de entrada utilizando un filtro de paso de banda con un rango de frecuencia de banda de paso especificado por el vector de dos elementos y expresado en unidades normalizadas de rad/muestra. utiliza un filtro de orden mínimo con una atenuación de banda de parada de 60 dB y compensa el retardo introducido por el filtro.xwpassπbandpass Si es una matriz, la función filtra cada columna de forma independiente.x

ejemplo

y = bandpass(x,fpass,fs) especifica que se muestrea a una velocidad de hercios.xfs El vector de dos elementos especifica el rango de frecuencia de banda de paso del filtro en hercios.fpass

y = bandpass(xt,fpass) bandpass-filters the data in timetable using a filter with a passband frequency range specified in hertz by the two-element vector .xtfpass La función filtra de forma independiente todas las variables del calendario y todas las columnas dentro de cada variable.

ejemplo

y = bandpass(___,Name,Value) especifica opciones adicionales para cualquiera de las sintaxis anteriores mediante argumentos de par nombre-valor. Puede cambiar la atenuación de la banda de parada, la pendiente de la banda de transición y el tipo de respuesta de impulso del filtro.

ejemplo

[y,d] = bandpass(___) también devuelve el objeto utilizado para filtrar la entrada.digitalFilterd

bandpass(___) sin argumentos de salida traza la señal de entrada y superpone la señal filtrada.

Ejemplos

contraer todo

Cree una señal muestreada a 1 kHz durante 1 segundo. La señal contiene tres tonos, uno a 50 Hz, otro a 150 Hz y un tercero a 250 Hz. Los tonos de alta frecuencia y baja frecuencia tienen el doble de amplitud del tono intermedio. La señal está incrustada en el ruido blanco gaussiano de varianza 1/100.

fs = 1e3; t = 0:1/fs:1; x = [2 1 2]*sin(2*pi*[50 150 250]'.*t) + randn(size(t))/10;

Filtro de paso de banda de la señal para eliminar los tonos de baja frecuencia y alta frecuencia. Especifique frecuencias de banda de paso de 100 Hz y 200 Hz. Mostrar las señales originales y filtradas, y también sus espectros.

bandpass(x,[100 200],fs)

Implementar un sintetizador de música digital básico y utilizarlo para reproducir una canción tradicional. Especifique una frecuencia de muestreo de 2 kHz. Traza el espectrograma de la canción.

fs = 2e3; t = 0:1/fs:0.3-1/fs;  l = [0 130.81 146.83 164.81 174.61 196.00 220 246.94]; m = [0 261.63 293.66 329.63 349.23 392.00 440 493.88]; h = [0 523.25 587.33 659.25 698.46 783.99 880 987.77]; note = @(f,g) [1 1 1]*sin(2*pi*[l(g) m(g) h(f)]'.*t);  mel = [3 2 1 2 3 3 3 0 2 2 2 0 3 5 5 0 3 2 1 2 3 3 3 3 2 2 3 2 1]+1; acc = [3 0 5 0 3 0 3 3 2 0 2 2 3 0 5 5 3 0 5 0 3 3 3 0 2 2 3 0 1]+1;  song = []; for kj = 1:length(mel)     song = [song note(mel(kj),acc(kj)) zeros(1,0.01*fs)]; end song = song/(max(abs(song))+0.1);  % To hear, type sound(song,fs)  pspectrum(song,fs,'spectrogram','TimeResolution',0.31, ...     'OverlapPercent',0,'MinThreshold',-60)

Bandpass-filtro de la señal para separar el registro medio de los otros dos. Especifique las frecuencias de banda de paso de 230 Hz y 450 Hz. Trazar las señales originales y filtradas en los dominios de tiempo y frecuencia.

pong = bandpass(song,[230 450],fs);  % To hear, type sound(pong,fs)  bandpass(song,[230 450],fs)

Trazar el espectrograma del registro medio.

figure pspectrum(pong,fs,'spectrogram','TimeResolution',0.31, ...     'OverlapPercent',0,'MinThreshold',-60)

Filtre el ruido blanco muestreado a 1 kHz utilizando un filtro de paso de banda de respuesta de impulso infinito con una anchura de banda de paso de 100 Hz. Utilice diferentes valores de pendiente. Trazar los espectros de las señales filtradas.

fs = 1000; x = randn(20000,1);  [y1,d1] = bandpass(x,[ 50 150],fs,'ImpulseResponse','iir','Steepness',0.5); [y2,d2] = bandpass(x,[200 300],fs,'ImpulseResponse','iir','Steepness',0.8); [y3,d3] = bandpass(x,[350 450],fs,'ImpulseResponse','iir','Steepness',0.95);  pspectrum([y1 y2 y3],fs) legend('Steepness = 0.5','Steepness = 0.8','Steepness = 0.95', ...     'Location','south')

Calcular y trazar las respuestas de frecuencia de los filtros.

[h1,f] = freqz(d1,1024,fs); [h2,~] = freqz(d2,1024,fs); [h3,~] = freqz(d3,1024,fs);  plot(f,mag2db(abs([h1 h2 h3]))) legend('Steepness = 0.5','Steepness = 0.8','Steepness = 0.95', ...     'Location','south') ylim([-100 10])

Haga que los filtros sean asimétricos especificando diferentes valores de pendiente en las frecuencias de banda de paso inferior y superior.

[y1,d1] = bandpass(x,[ 50 150],fs,'ImpulseResponse','iir','Steepness',[0.5 0.8]); [y2,d2] = bandpass(x,[200 300],fs,'ImpulseResponse','iir','Steepness',[0.5 0.8]); [y3,d3] = bandpass(x,[350 450],fs,'ImpulseResponse','iir','Steepness',[0.5 0.8]);  pspectrum([y1 y2 y3],fs)

Calcular y trazar las respuestas de frecuencia de los filtros.

[h1,f] = freqz(d1,1024,fs); [h2,~] = freqz(d2,1024,fs); [h3,~] = freqz(d3,1024,fs);  plot(f,mag2db(abs([h1 h2 h3]))) ylim([-100 10])

Argumentos de entrada

contraer todo

Señal de entrada, especificada como vector o matriz.

Ejemplo: especifica un sinusoides ruidososin(2*pi*(0:127)/16)+randn(1,128)/100

Ejemplo: especifica un sinusoides de dos canales.[2 1].*sin(2*pi*(0:127)'./[16 64])

Tipos de datos: single | double
Soporte de números complejos:

Rango de frecuencia de banda de paso normalizado, especificado como un vector de dos elementos con elementos en el intervalo (0, 1).

Intervalo de frecuencia de banda de paso, especificado como un vector de dos elementos con elementos en el intervalo (0, fs/2).

Frecuencia de muestreo, especificada como un escalar real positivo.

Horario de entrada. debe contener tiempos de fila crecientes, finitos e igualmente espaciados de tipo en segundos.xtduration

Si falta un horario o se duplican los puntos de tiempo, puede corregirlo con las sugerencias de .Clean Timetable with Missing, Duplicate, or Nonuniform Times (MATLAB)

Ejemplo: contiene una señal aleatoria de un solo canal y una señal aleatoria de dos canales, muestreada a 1 Hz durante 4 segundos.timetable(seconds(0:4)',randn(5,1),randn(5,2))

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: filtra la entrada utilizando un filtro IIR de orden mínimo que atenúa en 30 dB las frecuencias más pequeñas que las frecuencias más grandes que .'ImpulseResponse','iir','StopbandAttenuation',30fpass(1)fpass(2)

Tipo de respuesta de impulso del filtro, especificado como el par separado por comas que consta de y , , o .'ImpulseResponse''fir''iir''auto'

  • — La función diseña un filtro de respuesta de impulso finito (FIR) de orden mínimo, fase lineal.'fir' Para compensar el retardo, la función se anexa a la señal de entrada /2 ceros, donde está el orden del filtro.NN A continuación, la función filtra la señal y elimina las primeras muestras /2 de la salida.N

    En este caso, la señal de entrada debe ser al menos el doble de larga que el filtro que cumple con las especificaciones.

  • — La función diseña un filtro de respuesta de impulso infinito (IIR) de orden mínimo y utiliza la función para realizar el filtrado de fase cero y compensar el retardo del filtro.'iir'filtfilt

    Si la señal no es por lo menos tres veces más larga que el filtro que cumple con las especificaciones, la función diseña un filtro con un orden más pequeño y, por lo tanto, una pendiente más pequeña.

  • — La función diseña un filtro FIR de orden mínimo si la señal de entrada es lo suficientemente larga, y un filtro IIR de orden mínimo en caso contrario.'auto' Específicamente, la función sigue estos pasos:

    • Calcular el pedido mínimo que un filtro FIR debe tener para cumplir con las especificaciones. Si la señal es al menos el doble de tiempo que el orden de filtro requerido, diseñe y utilice ese filtro.

    • Si la señal no es lo suficientemente larga, calcule el orden mínimo que un filtro IIR debe tener para cumplir con las especificaciones. Si la señal es al menos tres veces más larga que el orden de filtro requerido, diseñe y use ese filtro.

    • Si la señal no es lo suficientemente larga, trunque la orden a un tercio de la longitud de la señal y diseñe un filtro IIR de esa orden. La reducción del orden se produce a expensas de la pendiente de la banda de transición.

    • Filtrar la señal y compensar el retraso.

La pendiente de la banda de transición, especificada como el par separado por comas que consta de un vector escalar o de dos elementos con elementos en el intervalo'Steepness' [0.5, 1). A medida que aumenta la pendiente, la respuesta del filtro se acerca a la respuesta de paso de banda ideal, pero la longitud del filtro resultante y el costo computacional de la operación de filtrado también aumentan. Consulte para obtener más información.Pendiente del filtro de paso de banda

Atenuación de la banda de detención del filtro, especificada como el par separado por comas que consta de y un escalar positivo en dB.'StopbandAttenuation'

Argumentos de salida

contraer todo

Señal filtrada, devuelta como vector, matriz o calendario con las mismas dimensiones que la entrada.

Filtro de paso de banda utilizado en la operación de filtrado, devuelto como un objeto.digitalFilter

  • Se utiliza para filtrar una señal utilizando .filter(d,x)xd

  • Se utiliza para visualizar la respuesta del filtro.fvtool(d)

  • Se utiliza para editar o generar un filtro digital basado en las especificaciones de respuesta de frecuencia.designfilt

Más acerca de

contraer todo

Pendiente del filtro de paso de banda

El argumento controla el ancho de las regiones de transición de un filtro.'Steepness' Cuanto menor sea la pendiente, más amplia será la región de transición. Cuanto mayor sea la pendiente, más estrecha será la región de transición.

Para interpretar la pendiente del filtro, tenga en cuenta las siguientes definiciones:

  • elFrecuencia Nyquist fNyquist, es el componente de frecuencia más alta de una señal que se puede muestrear a una velocidad determinada sin alias. fNyquist es 1 (a rad/muestra) cuando la señal de entrada no tiene información de tiempo, y /2 hercios cuando la señal de entrada es un horario o cuando se especifica una frecuencia de muestreo.πfs

  • La parte inferior y superior del filtro,frecuencias de la banda de parada fstoplower Y fstopupper, son las frecuencias por debajo de las cuales y por encima de las cuales la atenuación es igual o mayor que el valor especificado utilizando .'StopbandAttenuation'

  • El del filtro,menor anchura de transiciónWlowerEs fpasslowerfstoplowerDóndefpasslower es el primer elemento de .fpass

  • El del filtro,anchura de transición superiorWupperEs fstopupperfpassupperDóndefpassupper es el segundo elemento de .fpass

  • La mayoría de los filtros no ideales también atenúan la señal de entrada a través de la banda de paso. El valor máximo de esta atenuación dependiente de la frecuencia se denomina .onda de banda de paso Cada filtro utilizado por tiene una ondulación de banda de paso de 0,1 dB.bandpass

Para controlar el ancho de las bandas de transición, puede especificar como vector de dos elementos,'Steepness' [slower,supper], o un escalar. Cuando se especifica como vector, la función:'Steepness'

  • Calcula el ancho de transición inferior como

    Wlower = (1 – slower) × fpasslower.

    • Cuando el primer elemento de es igual a 0,5, el ancho de transición es el 50% de'Steepness' fpasslower.

    • Como primer elemento de los enfoques 1, el ancho de transición se vuelve progresivamente más estrecho hasta que alcanza un valor mínimo del 1% de'Steepness' fpasslower.

  • Calcula el ancho de transición superior como

    Wupper = (1 – supper) × (fNyquistfpassupper).

    • Cuando el segundo elemento de es igual a 0,5, el ancho de transición es el 50% de'Steepness' (fNyquistfpassupper).

    • Como segundo elemento de los enfoques 1, el ancho de transición se vuelve progresivamente más estrecho hasta que alcanza un valor mínimo del 1% de'Steepness' (fNyquistfpassupper).

Cuando se especifica como escalar, la función diseña un filtro con anchuras de transición inferiores y superiores iguales.'Steepness' El valor predeterminado de es 0.85.'Steepness'

Consulte también

Apps

Funciones

Introducido en R2018a