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);