零相位滤波

设计一个低通巴特沃思滤波器与1千赫3-dB频率实现零相位滤波的数据采样率为20千赫。

类型myZerophaseFilt.m
函数输出= myZerophaseFilt(输入)%#codegen [B,A] = butter(20,0.314);输出= filtfilt (B, A,输入);结束

使用codegen创建MEX文件myZerophaseFilt.m

codegenmyZerophaseFiltarg游戏{0}(20001)- omyZerophaseFilt_mex报告
代码生成成功:打开(“codegen/mex/myZerophaseFilt/html/report.mldatx”)查看报告。

生成一个有噪声的正弦信号作为滤波器的输入。

Fs = 20000;t = 0:1 / Fs: 1;comp500Hz = cos(2 *π* 500 * t);信号= comp500Hz + sin(2*pi*4000*t) + 0.2*randn(size(t));

使用MATLAB®和MEX函数过滤输入数据。

FilteredData = myZerophaseFilt(信号);MexFilteredData = myZerophaseFilt_mex(信号);

绘制500hz分量和滤波后的数据。

经颅磁刺激= t * 1000;comp500Hz情节(tms)MexFilteredData情节(tms)情节(tms FilteredData)包含(的毫秒)ylabel (“振幅”)轴([0 25 -1.8 1.8])“500 Hz组件”,墨西哥人的,MATLAB的)