matlab程序低通滤波器

[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低通滤波器(频域)');


© 2024 实用范文网 | 联系我们: webmaster# 6400.net.cn