www.gusucode.com > MATLAB对其进行时域与频域分析源码程序 > FIRHighPass.m

    clear all;
close all;
[x,fs,bits]=wavread('课设测试.wav');   %,x:语音数据;fs:采样频率;bits:采样点数                  
N=length(x);
n=0:N-1;


figure(3);

Wp=2*pi*4800/fs;                                  %通带频率数字指标
Ws=2*pi*5000/fs;                                  %阻带频率数字指标
Wdelta=Ws-Wp;                                     %过渡带宽
Wc=(Wp+Ws)/2;                                     %理想截止频率
N1=12.8*pi/Wdelta;                                %求出FIR滤波器的阶数
N3=ceil(N1);                                      %N3朝N1正无穷方向舍入 
d=fir1(N3,Wc/pi,'high',kaiser(N3+1,10.056));      %使用标准频率响应的加窗设计函数fir1设计HighPass滤波器
[H,f]=freqz(d,1,512,fs);                          %求出数字滤波器频率响应
 plot(f,20*log10(abs(H)));                        %画出FIRHighPass衰减特性
 xlabel('频率/Hz');
 ylabel('振幅/dB');
 grid on;
 axis([2000,8000,-180,20]);
 title('FIRHighPass器衰减特性');   
  
%----------滤波前后波形比较----------------------
figure(4);
z=fftfilt(d,x);                  %利用函数fftfilt对信号进行滤波
subplot(2,2,1);
plot(n,x);                       %画出原语音信号的波形
xlabel('n');
ylabel('x(n)');
title('原始语音信号');
subplot(2,2,3);
plot(n,z);                       %FIRHighPass后的波形
title('FIRHighPass后的波形');
%-----------滤波前后语音信号频谱---------------------%

subplot(2,2,2);
[H,f]=freqz(x,1,512,fs);        
plot(f,20*log10(abs(H)));         %滤波前语音信号频谱
xlabel('频率/Hz');
ylabel('振幅/dB');
title('FIRHighPass前语音信号频谱');
grid on;
subplot(2,2,4);
[H,f]=freqz(z,1,512,fs);
plot(f,20*log10(abs(H)));          %滤波后语音信号频谱
xlabel('频率/Hz');
ylabel('振幅/dB');
title('FIRHighPass后语音信号频谱');
grid on;
sound(z,fs,bits);