Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

sosfilt

Filtrado digital IIR de segundo orden (bicuadrático)

Descripción

y = sosfilt(sos,x) aplica el filtro digital de sección de segundo orden sos a la señal de entrada x.

  • Si x es una matriz, la función opera a lo largo de la primera dimensión y devuelve los datos filtrados para cada columna.

  • Si x es un arreglo multidimensional, la función opera a lo largo de la primera dimensión del arreglo con un tamaño mayor que 1.

ejemplo

y = sosfilt(sos,x,dim) opera a lo largo de la dimensión dim.

Ejemplos

contraer todo

Cargue chirp.mat. El archivo contiene una señal, y, que tiene la mayor parte de su potencia por encima de Fs/4, o la mitad de la frecuencia de Nyquist. La tasa de muestreo es 8192 Hz.

load chirp

t = (0:length(y)-1)/Fs;

Diseñe un filtro paso alto Butterworth de 7.º orden para atenuar los componentes de la señal por debajo de Fs/4. Utilice una frecuencia de corte normalizada de 0,48π rad/muestra. Exprese los coeficientes del filtro en términos de secciones de segundo orden.

[zhi,phi,khi] = butter(7,0.48,'high');
soshi = zp2sos(zhi,phi,khi);

freqz(soshi)

Filtre la señal. Muestre las señales originales y las filtradas en paso alto. Utilice la misma escala de eje y en ambas gráficas.

outhi = sosfilt(soshi,y);

figure
subplot(2,1,1)
plot(t,y)
title('Original Signal')
ys = ylim;

subplot(2,1,2)
plot(t,outhi)
title('Highpass-Filtered Signal')
xlabel('Time (s)')
ylim(ys)

Diseñe un filtro paso bajo con las mismas especificaciones. Filtre la señal y compare el resultado con el original. Utilice la misma escala de eje y en ambas gráficas. El resultado es mayoritariamente ruido.

[zlo,plo,klo] = butter(7,0.48);
soslo = zp2sos(zlo,plo,klo);

outlo = sosfilt(soslo,y);

subplot(2,1,1)
plot(t,y)
title('Original Signal')
ys = ylim;

subplot(2,1,2)
plot(t,outlo)
title('Lowpass-Filtered Signal')
xlabel('Time (s)')
ylim(ys)

Argumentos de entrada

contraer todo

Filtro digital de sección de segundo orden, especificado como una matriz de L por 6, donde L es el número de secciones de segundo orden. La matriz

sos=[b01b11b211a11a21b02b12b221a12a22b0Lb1Lb2L1a1La2L]

representa el filtro digital de sección de segundo orden

H(z)=k=1LHk(z)=k=1Lb0k+b1kz1+b2kz21+a1kz1+a2kz2.

Ejemplo: [b,a] = butter(3,1/32); sos = tf2sos(b,a) especifica un filtro Butterworth de tercer orden con una frecuencia normalizada de 3 dB de π/32 rad/muestra.

Tipos de datos: single | double

Señal de entrada, especificada como un vector, matriz o arreglo N-D.

Ejemplo: x = [2 1].*sin(2*pi*(0:127)'./[16 64]) especifica una sinusoide de dos canales.

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

Dimensión sobre la que se desea operar, especificada como escalar entero positivo. De forma predeterminada, la función opera a lo largo de la primera dimensión del arreglo de x con un tamaño mayor que 1.

Tipos de datos: single | double

Argumentos de salida

contraer todo

Señal filtrada, devuelta como un vector, una matriz o un arreglo N-D. y tiene el mismo tamaño que x.

Referencias

[1] Bank, Balázs. "Converting Infinite Impulse Response Filters to Parallel Form". IEEE Signal Processing Magazine. Vol. 35, Number 3, May 2018, pp. 124-130.

[2] Orfanidis, Sophocles J. Introduction to Signal Processing. Englewood Cliffs, NJ: Prentice-Hall, 1996.

Capacidades ampliadas

Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.

Historial de versiones

Introducido antes de R2006a

Consulte también

| |