bandstop
Señales de filtro eliminador de banda
Sintaxis
Descripción
filtra la señal de entrada y
= bandstop(x
,wpass
)x
mediante un filtro eliminador de banda con un rango de frecuencia de la banda de parada especificado por el vector de dos elementos wpass
y expresado en unidades normalizadas de π rad/muestra. bandstop
utiliza un filtro de orden mínimo con una atenuación de la banda de parada de 60 dB y compensa el retardo introducido por el filtro. Si x
es una matriz, la función filtra cada columna de forma independiente.
realiza el filtrado eliminador de banda de los datos del horario y
= bandstop(xt
,fpass
)xt
mediante un filtro con un rango de frecuencia de banda de parada especificado en hercios por el vector de dos elementos fpass
. La función filtra independientemente todas las variables del horario y todas las columnas dentro de cada variable.
especifica opciones adicionales para cualquiera de las sintaxis anteriores con argumentos de par nombre-valor. Puede modificar la atenuación de banda de parada, la Inclinación del filtro eliminador de banda y el tipo de respuesta al impulso del filtro.y
= bandstop(___,Name=Value
)
[
también devuelve el objeto y
,d
] = bandstop(___)digitalFilter
d
utilizado para filtrar la entrada.
bandstop(___)
sin argumentos de salida representa la señal de entrada y superpone la señal filtrada.
Ejemplos
Filtrado eliminador de banda de tonos
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 de baja frecuencia tienen el doble de amplitud que el tono intermedio. La señal está integrada en ruido blanco gaussiano con 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;
Realice un filtrado eliminador de banda de la señal para eliminar el tono de frecuencia media. Especifique frecuencias paso banda de 100 Hz y 200 Hz. Muestre las señales originales y las filtradas, y también sus espectros.
bandstop(x,[100 200],fs)
Filtrado eliminador de banda de señal musical
Implemente un sintetizador de música digital básico y utilícelo para reproducir una canción tradicional. Especifique una tasa de muestreo de 2 kHz. Represente el espectrograma de la canción.
fs = 2e3; t = 0:1/fs:0.3-1/fs; fq = [-Inf -9:2]/12; note = @(f,g) [1 1 1]*sin(2*pi*440*2.^[fq(g)-1 fq(g) fq(f)+1]'.*t); mel = [5 3 1 3 5 5 5 0 3 3 3 0 5 8 8 0 5 3 1 3 5 5 5 5 3 3 5 3 1]+1; acc = [5 0 8 0 5 0 5 5 3 0 3 3 5 0 8 8 5 0 8 0 5 5 5 0 3 3 5 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)
Realice un filtrado eliminador de banda de la señal para separar el registro medio de los otros dos. Especifique frecuencias paso banda de 230 Hz y 450 Hz. Represente las señales originales y las filtradas en los dominios del tiempo y la frecuencia.
bong = bandstop(song,[230 450],fs);
% To hear, type sound(bong,fs)
bandstop(song,[230 450],fs)
Represente el espectrograma de la canción sin el registro medio.
figure pspectrum(bong,fs,"spectrogram",TimeResolution=0.31, ... OverlapPercent=0,MinThreshold=-60)
Inclinación del filtro eliminador de banda
Filtre ruido blanco muestreado a 1 kHz mediante un filtro eliminador de banda de respuesta al impulso infinita con un ancho de banda de parada de 100 Hz. Utilice diferentes valores de inclinación. Represente los espectros de las señales filtradas.
fs = 1000; x = randn(20000,1); [y1,d1] = bandstop(x,[ 50 150],fs,ImpulseResponse="iir",Steepness=0.5); [y2,d2] = bandstop(x,[200 300],fs,ImpulseResponse="iir",Steepness=0.8); [y3,d3] = bandstop(x,[350 450],fs,ImpulseResponse="iir",Steepness=0.95); pspectrum([y1 y2 y3],fs) legend("Steepness = " + [0.5 0.8 0.95],Location="south")
Calcule y represente las respuestas en 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 0.8 0.95],Location="south") ylim([-120 20])
Haga los filtros asimétricos especificando diferentes valores de inclinación en las frecuencias paso banda superior e inferior.
[y1,d1] = bandstop(x,[ 50 150],fs,ImpulseResponse="iir",Steepness=[0.5 0.8]); [y2,d2] = bandstop(x,[200 300],fs,ImpulseResponse="iir",Steepness=[0.5 0.8]); [y3,d3] = bandstop(x,[350 450],fs,ImpulseResponse="iir",Steepness=[0.5 0.8]); pspectrum([y1 y2 y3],fs)
Calcule y represente las respuestas en 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([-120 20])
Argumentos de entrada
x
— Señal de entrada
vector | matriz
Señal de entrada, especificada como vector o matriz.
Ejemplo: sin(2*pi*(0:127)/16)+randn(1,128)/100
especifica una sinusoide con ruido
Ejemplo: [2 1].*sin(2*pi*(0:127)'./[16 64])
especifica un sinusoide de dos canales.
Tipos de datos: single
| double
Soporte de números complejos: Sí
wpass
— Rango normalizado de frecuencia de la banda de parada
vector de dos elementos con elementos en (0, 1)
Rango normalizado de frecuencia de la banda de parada, especificado como vector de dos elementos con elementos en el intervalo (0, 1).
fpass
— Rango de frecuencia de la banda de parada
vector de dos elementos con elementos en (0, fs
/2)
Rango de frecuencia de la banda de parada, especificado como vector de dos elementos con elementos en el intervalo (0, fs
/2).
fs
— Tasa de muestreo
escalar real positivo
Tasa de muestreo, especificada como un escalar real positivo.
xt
— Horario de entrada
horario
Horario de entrada. xt
debe contener tiempos de fila crecientes, finitos e igualmente espaciados del tipo duration
en segundos.
Si en un horario faltan puntos de tiempo o están duplicados, puede solucionarlo con los consejos de Clean Timetable with Missing, Duplicate, or Nonuniform Times.
Ejemplo: timetable(seconds(0:4)',randn(5,1),randn(5,2))
contiene una señal aleatoria monocanal y una señal aleatoria de dos canales muestreadas a 1 Hz durante 4 segundos.
Ejemplo: timetable(randn(5,1),randn(5,2),SampleRate=1)
contiene una señal aleatoria monocanal y una señal aleatoria de dos canales muestreadas a 1 Hz durante 4 segundos.
Argumentos de par nombre-valor
Especifique pares de argumentos opcionales como Name1=Value1,...,NameN=ValueN
, donde Name
es el nombre del argumento y Value
es el valor correspondiente. Los argumentos de nombre-valor deben aparecer después de otros argumentos. Sin embargo, el orden de los pares no importa.
Ejemplo: ImpulseResponse="iir",StopbandAttenuation=30
filtra la entrada con un filtro IIR de orden mínimo que atenúa por 30 dB las frecuencias de fpass(1)
a fpass(2)
.
En las versiones anteriores a la R2021a, utilice comas para separar cada nombre y valor, y encierre Name
entre comillas.
Ejemplo: 'ImpulseResponse','iir','StopbandAttenuation',30
filtra la entrada con un filtro IIR de orden mínimo que atenúa por 30 dB las frecuencias de fpass(1)
a fpass(2)
.
ImpulseResponse
— Tipo de respuesta al impulso
"auto"
(predeterminado) | "fir"
| "iir"
Tipo de respuesta al impulso del filtro, especificado como "fir"
, "iir"
o "auto"
.
"fir"
: la función diseña un filtro de respuesta al impulso finita (FIR) de orden mínimo y fase lineal. Para compensar el retardo, la función añade a la señal de entrada N/2 ceros, donde N es el orden del filtro. Después, la función filtra la señal y elimina las primeras N/2 muestras de la salida.En este caso, la señal de entrada debe ser al menos el doble de larga que el filtro que cumple las especificaciones.
"iir"
: la función diseña un filtro de respuesta al impulso infinita (IIR) de orden mínimo y utiliza la funciónfiltfilt
para realizar un filtrado de fase cero y compensar el retardo del filtro.Si la señal no es al menos tres veces más larga que el filtro que cumple las especificaciones, la función diseña un filtro de menor orden y, por tanto, de menor inclinación.
"auto"
: la función diseña un filtro FIR de orden mínimo si la señal de entrada es lo suficientemente larga y, si no lo es, un filtro IIR de orden mínimo. Específicamente, la función sigue estos pasos:Calcule el orden mínimo que debe tener un filtro FIR para cumplir las especificaciones. Si la señal es al menos el doble de larga 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 debe tener un filtro IIR para cumplir las especificaciones. Si la señal es al menos tres veces más larga que el orden de filtro requerido, diseñe y utilice ese filtro.
Si la señal no es lo suficientemente larga, trunque el orden a un tercio de la longitud de la señal y diseñe un filtro IIR de ese orden. La reducción de orden se realiza a costa de la inclinación de la banda de transición.
Filtre la señal y compense el retardo.
Steepness
— Inclinación de la banda de transición
0.85
(predeterminado) | escalar en el intervalo [0.5, 1) | vector de dos elementos con elementos en el intervalo [0.5, 1)
Inclinación de la banda de transición, especificada como un escalar o un vector de dos elementos en el intervalo [0.5, 1). Cuando aumenta la inclinación, la respuesta del filtro se acerca a la respuesta ideal de eliminador de banda, pero la longitud de filtro resultante y el coste computacional de la operación de filtrado también aumentan. Para obtener más información, consulte Inclinación del filtro eliminador de banda.
StopbandAttenuation
— Atenuación de banda de parada del filtro
60
(predeterminado) | escalar positivo en dB
Atenuación de banda de parada del filtro, especificada como un escalar positivo en dB.
Argumentos de salida
y
— Señal filtrada
vector | matriz | horario
Señal filtrada, devuelta como vector, matriz u horario con las mismas dimensiones que la entrada.
d
— Filtro eliminador de banda
objeto digitalFilter
Filtro eliminador de banda utilizado en la operación de filtrado, devuelto como un objeto digitalFilter
.
Utilice
filter
(d,x)
para filtrar una señalx
cond
. A diferencia debandstop
, la funciónfilter
no compensa el retardo del filtro. También puede utilizar las funcionesfiltfilt
yfftfilt
con objetosdigitalFilter
.Utilice Filter Analyzer para visualizar la respuesta del filtro.
Utilice
designfilt
para editar o generar un filtro digital según las especificaciones de frecuencia-respuesta.
Más acerca de
Inclinación del filtro eliminador de banda
El argumento Steepness
controla el ancho de las regiones de transición de un filtro. Cuanto menor sea la inclinación, más ancha será la región de transición. Cuanto mayor sea la inclinación, más estrecha será la región de transición.
Para interpretar la inclinación del filtro, considere las siguientes definiciones:
La frecuencia de Nyquist, fNyquist, es el componente de frecuencia más elevado de una señal que puede muestrearse a una tasa dada sin solapamiento. fNyquist es 1 (×π rad/muestra) cuando la señal de entrada no cuenta con información temporal y
fs
/2 hercios cuando la señal de entrada es un horario o cuando especifica una tasa de muestreo.Las frecuencias de la banda de parada inferior y superior del filtro, fstoplower y fstopupper, son las frecuencias entre las cuales la atenuación es igual a o mayor que el valor especificado con
StopbandAttenuation
.El centro de la región de la banda de parada es fcenter = (fstoplower + fstopupper)/2.
El ancho de transición inferior del filtro, Wlower, es fstoplower –
fpass
lower, donde la frecuencia paso banda inferiorfpass
lower es el primer elemento delfpass
especificado.El ancho de transición superior del filtro, Wupper, es
fpass
upper – fstopupper, donde la frecuencia paso banda superiorfpass
upper es el segundo elemento defpass
.La mayoría de los filtros no ideales también atenúan la señal de entrada en la banda de paso. El valor máximo de esta atenuación dependiente de la frecuencia se denomina ondulación de banda de paso. Todos los filtros utilizados por
bandstop
cuentan con una ondulación de banda de paso de 0,1 dB.
Para controlar el ancho de las bandas de transición, puede especificar Steepness
como un vector de dos elementos, [slower,supper], o como un escalar. Cuando especifica Steepness
como un vector, la función:
Calcula el ancho de transición inferior como
Wlower = (1 – slower) × (fcenter –
fpass
lower).Cuando el primer elemento de
Steepness
es igual a 0.5, el ancho de transición es el 50% de (fcenter –fpass
lower).Cuando el primer elemento de
Steepness
se acerca a 1, el ancho de transición se va estrechando paulatinamente hasta que alcanza un valor mínimo del 1% de (fcenter –fpass
lower).
Calcula el ancho de transición superior como
Wupper = (1 – supper) × (
fpass
upper – fcenter).Cuando el segundo elemento de
Steepness
es igual a 0.5, el ancho de transición es el 50% de (fpass
upper – fcenter).Cuando el segundo elemento de
Steepness
se acerca a 1, el ancho de transición se va estrechando paulatinamente hasta que alcanza un valor mínimo del 1% de (fpass
upper – fcenter).
Cuando especifica Steepness
como un escalar, la función diseña un filtro con anchos de transición superior e inferior iguales. El valor predeterminado de Steepness
es 0.85.
Historial de versiones
Introducido en R2018a
Consulte también
Apps
Funciones
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)