[x1,Fs,bits]=wavread(C:\Documents and Settings\Administrator\桌面\('001.wav');
derta_Fs = Fs/length(x1);%设置频谱的间隔,分辨率 ,这里保证了x轴的点数必须和y轴点数一致
fs=Fs;
fp1=1000;
fs1=1200;
As1=100;
wp1=2*pi*fp1/fs; %
ws1=2*pi*fs1/fs; %
BF1=ws1-wp1;
wc1=(wp1+ws1)/2;
M1=ceil((As1-7.95)/(2.286*BF1))+1;%按凯泽窗计算滤波器阶数
N1=M1+1;
beta1=0.1102*(As1-8.7);
Window=(kaiser(N1,beta1)); %求凯泽窗窗函数
b1=fir1(M1,wc1/pi,Window);% wc1/pi为归一化,窗函数法设计函数
figure(2);
freqz(b1,1,512); %[H,w]=freqz(B,A,N),(1)中B和A分别为离散系统的系统函数分子、分母多项式的系数向量,返回量H则包含了离散系统频响在 0~pi范围内N个频率等分点的值(其中N为正整数),w则包含了范围内N个频率等分点。调用默认的N时,其值是512。
title('FIR低通滤波器的频率响应');
x1_low = filter(b1,1, x1);%对信号进行低通滤波 ,Y = filter(B,A,X) ,输入X为滤波前序列,Y为滤波结果序列,B/A 提供滤波器系数,B为分子, A为分母
sound(x1_low,Fs,bits);
figure(3);
subplot(2,1,1);
plot(x1_low);
title('信号经过FIR低通滤波器(时域)');
subplot(2,1,2);
plot([-Fs/2:derta_Fs: Fs/2-derta_Fs],abs(fftshift(fft(x1_low))));
title('信号经过FIR低通滤波器(频域)');
[x1,Fs,bits]=wavread(C:\Documents and Settings\Administrator\桌面\('001.wav');
derta_Fs = Fs/length(x1);%设置频谱的间隔,分辨率 ,这里保证了x轴的点数必须和y轴点数一致
fs=Fs;
fp1=1000;
fs1=1200;
As1=100;
wp1=2*pi*fp1/fs; %
ws1=2*pi*fs1/fs; %
BF1=ws1-wp1;
wc1=(wp1+ws1)/2;
M1=ceil((As1-7.95)/(2.286*BF1))+1;%按凯泽窗计算滤波器阶数
N1=M1+1;
beta1=0.1102*(As1-8.7);
Window=(kaiser(N1,beta1)); %求凯泽窗窗函数
b1=fir1(M1,wc1/pi,Window);% wc1/pi为归一化,窗函数法设计函数
figure(2);
freqz(b1,1,512); %[H,w]=freqz(B,A,N),(1)中B和A分别为离散系统的系统函数分子、分母多项式的系数向量,返回量H则包含了离散系统频响在 0~pi范围内N个频率等分点的值(其中N为正整数),w则包含了范围内N个频率等分点。调用默认的N时,其值是512。
title('FIR低通滤波器的频率响应');
x1_low = filter(b1,1, x1);%对信号进行低通滤波 ,Y = filter(B,A,X) ,输入X为滤波前序列,Y为滤波结果序列,B/A 提供滤波器系数,B为分子, A为分母
sound(x1_low,Fs,bits);
figure(3);
subplot(2,1,1);
plot(x1_low);
title('信号经过FIR低通滤波器(时域)');
subplot(2,1,2);
plot([-Fs/2:derta_Fs: Fs/2-derta_Fs],abs(fftshift(fft(x1_low))));
title('信号经过FIR低通滤波器(频域)');