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.

Aplicar un filtro paso bajo a una señal de entrada

Suponiendo una tasa de muestreo de 20 kHz, cree un filtro Butterworth de cuarto orden con 3 dB de una frecuencia de 2,5 kHz. Los coeficientes del filtro de butter deben ser constantes para generar código.

type ButterFilt
function output_data=ButterFilt(input_data) %#codegen
[b,a]=butter(4,0.25);
output_data=filter(b,a,input_data);
end

Utilice el filtro Butterworth para realizar un filtrado de paso bajo de una onda sinusoidal con ruido.

t = transpose(linspace(0,pi,10000));
x = sin(t) + 0.03*randn(numel(t),1);

Filtre la onda sinusoidal con ruido utilizando el filtro Butterworth. Represente la señal filtrada.

fx = ButterFilt(x);
plot(fx)

Figure contains an axes object. The axes object contains an object of type line.

Ejecute el comando codegen para obtener el código fuente en C ButterFilt.c y el archivo MEX:

codegen ButterFilt -args {zeros(10000,1)} -o ButterFilt_mex -report
Code generation successful: To view the report, open('codegen/mex/ButterFilt/html/report.mldatx')

El código fuente en C incluye los cinco coeficientes del numerador y del denominador del filtro Butterworth de cuarto orden como constantes estáticas. Aplique el filtro utilizando el archivo MEX. Represente la señal filtrada.

output_data = ButterFilt_mex(x);
hold on
plot(output_data)
hold off

Figure contains an axes object. The axes object contains 2 objects of type line.