对输入信号应用低通滤波器
假设采样率为 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