已知一个包含几个频率成分的原信号,现在我用DFT画出了它的频谱图,可以得出它是由3个不同频率的信号组成的(33Hz,40Hz,48Hz)。
请问怎么设计滤波器分别把它们滤出来啊,我已经设计了一个低通滤波器把33Hz的信号滤出来了,其他两个怎么也滤不出来,参数也不知道如何设置,哪位大神肯给指点下。
这是我低通滤波器的程序:
clear;fs=160;
load('yy7.mat');
x=yy7(1:160);
L=length(x);N=160;Hw=fft(x,N);
figure(1);subplot(2,1,1);plot(x);
grid on;title('滤波前信号x');xlabel('n');% 原始信号
subplot(2,1,2);plot((0:N-1)*fs/L,abs(Hw));% 查看信号频谱
grid on;title('滤波前信号频谱图');xlabel('频率');ylabel('振幅|H(e^jw)|');
%% x_1
Ap=1;As=60;% 定义通带及阻带衰减
%dev=[(10^(Ap/20)-1)/(10^(Ap/20)+1),10^(-As/20)];% 计算偏移量
mags=[1,0];% 低通
fcuts=[34,39];% 边界频率
[N,Wn,beta,ftype]=kaiserord(fcuts,mags,[0.01 0.1],fs);% 估算FIR滤波器阶数
hh1=fir1(N,Wn,ftype,kaiser(N+1,beta));% FIR滤波器设计
x_1=filter(hh1,1,x);% 滤波
x_1(1:ceil(N/2))=[];% 群延时N/2,删除无用信号部分
L=length(x_1);N=160;Hw_1=fft(x_1,N);
figure(2);subplot(2,1,1);plot((1),x_1);
grid on;title('x_1');xlabel('n');
subplot(2,1,2);plot((0:N-1)*fs/L,abs(Hw_1));% 查看信号频谱
grid on;title('滤波后信号x_1频谱图');xlabel('频率');ylabel('振幅|H(e^jw)|');
yy7.rar
(0 Bytes, 下载次数: 0)
|
|
|
|
|
共 4 个关于本帖的回复 最后回复于 2014-5-7 15:26