在做数字信号处理的时候我们经常需要处理各种各样的波形,特别是混合波形的提取。在混合波形中提取目标波形,会经常使用到滤波器,这里通过matlab中的conv函数(向量卷积运算)实现滤波输出。
一:设置滤波器参数
在MATLAB中输入fdatool(Filer Dsign and analysis tool)即可调出滤波器设置界面窗口
里面可以设置滤波器的类型,采样频率,截止频率等。本设计设置的参数如下图所示。
注意:截止频率<采样频率。Fstop<Fs
二、导出设置好的滤波器参数
完成滤波器设计之后,点击file-Export(导出),在出来的对话框中直接Export即可。
之后输入Num即可看到滤波器的参数
三、滤波前后对比
matlab 代码如下
Fs = 10000; % 采样频率决定了两个正弦波点之间的间隔
N = 4096; % 采样点数
N1 = 0:1/Fs:N/Fs-1/Fs;
normal = sin(1000*2*pi*N1);
in = sin(1000*2*pi*N1) + sin(3000*2*pi*N1) + sin(4000*2*pi*N1); % 混合正弦波形
% 滤波器参数
coeff = [-0.0325,-0.0384,0.0784,0.2874,0.3984,0.2874,0.0784,-0.0384,-0.0325];
% 滤波器输出
out = conv(in,coeff);
% 画图
subplot(3,1,1);
plot(in);
xlabel('滤波前');
axis([0 200 -3 3]);
subplot(3,1,2);
plot(out);
xlabel('滤波后');
axis([100 200 -2 2])
subplot(3,1,3);
plot(normal);
xlabel('原始波形');
axis([100 200 -2 2])
运行后的输出波形
可以看出滤波后的波形和原来的波形相比还是不错的。