Main Content

对输入信号应用低通滤波器

假设采样率为 20 kHz,创建一个 3-dB 频率为 2.5 kHz 的四阶巴特沃斯滤波器。为进行代码生成,butter 的滤波器系数必须为常量。

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

使用巴特沃斯滤波器对含噪正弦波进行低通滤波。

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

使用巴特沃斯滤波器对含噪正弦波进行滤波。绘制滤波后的信号。

fx = ButterFilt(x);
plot(fx)

运行 codegen 命令以获取 C 源代码 ButterFilt.c 和 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')

C 源代码包括四阶巴特沃斯滤波器的五个分子和分母系数,均为静态常量。使用 MEX 文件应用滤波器。绘制滤波后的信号。

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