Hamming窗带通滤波器 %Hamming窗带通滤波器的设计 fp1=200;fc1=100; fpu=8000;fcu=10000; wlp=2*pi*fp1/FS;wls=2*pi*fc1/FS; wup=2*pi*fpu/FS;wus=2*pi*fcu/FS; Bt=wlp-wls; N0=ceil(6.6*pi/Bt); N=N0+mod(N0+1,2); wc=[(wls+wlp)/2/pi,(wus+wup)/2/pi]; hn=fir1(N-1,wc,hamming(N)); [h1,w1] = freqz(hn,1,512,FS); figure(4); subplot(2,1,1);plot(hn);axis ([700 900 -0.5 1]);xlabel('n');ylabel('幅度');title('hamming窗带通时域图'); subplot(2,1,2);plot(w1,abs(h1));title('hamming窗带通频谱图');axis tight;xlabel('f/Hz');ylabel('耗损(dB)'); pause(1); %对滤波后的信号进行分析变换 X=conv(hn,x); n2=length(X); n2=2^nextpow2(n2); f=FS*(0:n2/2-1)/n2; figure(5);subplot(2,1,1);plot(X);title('滤波后的信号时域图');axis tight;xlabel('f/Hz');ylabel('幅度'); X1=fft(X,n2);subplot(2,1,2);plot(f,abs(X1(1:n2/2))); axis tight;xlabel('f/Hz');ylabel('幅度');title('滤波后的信号频谱'); sound(X,FS); 图1 语音信号 图2 加噪信号 图3 滤波信号 Hamming窗带通滤波器程序
- %hamming带通
- %产生语音信号
- clc;
- Fs=48000;
- [x,FS]=audioread('C:\Users\SDHH\Documents\录音\luyin.m4a');
- x=x(:,1);
- sound(x,FS);
- %频谱分析
- n=length(x);
- n=2^nextpow2(n); %选取变换的点数
- t=(0:(n-1))/FS;%计算音频信号的长度
- x=[x',zeros(1,n-length(x))]';
- figure(1);
- subplot(2,1,1); plot(t,x); axis tight; title('语音信号时域图'); xlabel('t/s');ylabel('幅度')
- y=fft(x,n); %对n点进行傅里叶变换到频域
- f=FS*(0:n/2-1)/n; % 对应点的频率
- subplot(2,1,2);
- plot(f,abs(y(1:n/2)));axis tight;xlabel('f/Hz');ylabel('幅度');title('语音信号频域图');
- pause(2.5);
- %###########################################################################################################
- %产生噪声信号
- noise=1*sin(2*pi*20000*t)+1*sin(2*pi*200*t);
- Noise=fft(noise,n);%对n点进行傅里叶变换到频域
- figure(2);
- subplot(2,1,1);plot(t,noise);axis tight;xlabel('t/s');ylabel('幅度');title('加噪声信号时域图');
- subplot(2,1,2)
- plot(f,abs(Noise(1:n/2))); %加噪语音信号的频谱图
- axis axis([1 40000 1 50000] );xlabel('f/Hz');ylabel('幅度');title('加噪语音信号频谱图');
- pause(1);
- %#############################################################################################################
- x1=x+noise'; %将两个信号叠加成一个新的信号——加噪声处理
- sound(x1,FS);
- %加噪后频谱分析
- noise_1=fft(x1,n);%对n点进行傅里叶变换到频域
- figure(3);
- subplot(2,1,1)
- plot(t,x1);axis tight;xlabel('t/s');ylabel('幅度');title('加噪声信号时域图');
- subplot(2,1,2)
- plot(f,abs(noise_1(1:n/2))); %加噪语音信号的频谱图
- axis ([1 30000 1 4000] ;xlabel('f/Hz');ylabel('幅度');title('加噪语音信号频谱图');
- pause(2.5);
- %#################################################################################################################
- %hamming窗带通滤波器设计
- fp1=200;fc1=100;
- fpu=8000;fcu=10000;
- wlp=2*pi*fp1/FS;wls=2*pi*fc1/FS;
- wup=2*pi*fpu/FS;wus=2*pi*fcu/FS;
- Bt=wlp-wls;
- N0=ceil(6.6*pi/Bt);
- N=N0+mod(N0+1,2);
- wc=[(wls+wlp)/2/pi,(wus+wup)/2/pi];
- hn=fir1(N-1,wc,hamming(N));
- [h1,w1] = freqz(hn,1,512,FS);
- figure(4);
- subplot(2,1,1);plot(hn);axis tight;xlabel('n');ylabel('幅度');title('hamming窗带通时域图');
- subplot(2,1,2);plot(w1,abs(h1));title('hamming窗带通频谱图');axis ([700 900 -0.5 1]);xlabel('f/Hz');ylabel('耗损(dB)');
- pause(1);
- %#################################################################################################################
- %对滤波后的信号进行分析变换
- X=conv(hn,x);
- n2=length(X);
- n2=2^nextpow2(n2);
- f=FS*(0:n2/2-1)/n2;
- figure(5);subplot(2,1,1);plot(X);title('滤波后的信号时域图');axis tight;xlabel('f/Hz');ylabel('幅度');
- X1=fft(X,n2);subplot(2,1,2);plot(f,abs(X1(1:n2/2))); axis tight;xlabel('f/Hz');ylabel('幅度');title('滤波后的信号频谱');
- sound(X,FS);
复制代码
完整的Word格式文档51黑下载地址:
Hamming窗带通滤波器.docx
(82.7 KB, 下载次数: 20)
|