您好,欢迎光临本网站![请登录][注册会员]  
文件名称: 语音信号滤波去噪——使用凯塞窗设计的FIR滤波器
  所属分类: 网络管理
  开发工具:
  文件大小: 217kb
  下载次数: 0
  上传时间: 2013-06-29
  提 供 者: u0112*****
 详细说明: 做到一个关于去噪的滤波器的课程设计! 附录1:语音信号采集源程序 % 程序名称:语音信号的采集 % 程序功能:实现语音信号的采集,并且画出语音信号的时域和频域图 % 程序作者: % 最后修改日期:2011-3-4 >>[x,fs,bits]=wavread('wudan.wav') ; % 输入参数为文件的全路径和文件名,输出的第一个参数是每个样本的值,fs是生成该波形文件时的采样率,bits是波形文件每样本的编码位数。 >>sound(x,fs,bits); % 按指定的采样率和每样本编码位数回放 >>N=length(x); % 计算信号x的长度 >>fn=1000; % 单频噪声频率 >>t=0:1/fs:(N-1)/fs; % 计算时间范围,样本数除以采样频率 >>x=x'; y=x+0.01.*sin(fn*2*pi*t); %加入单频干扰信号 >>sound(y,fs,bits) ; % 对加噪信号进行回放 >>X=abs(fft(x)); Y=abs(fft(y)); % 对原始信号和加噪信号进行fft变换,取幅度谱 >> X=X(1:N/2); Y=Y(1:N/2); % 截取前半部分 >>deltaf=fs/N; % 计算频谱的谱线间隔 >>f=0:deltaf:fs/2-deltaf; % 计算频谱频率范围 >> subplot(2,2,1);plot(t,x); axis([0 3 -0.2 0.2]); grid on; %画原始语音信号的时域图 >> xlabel('时间(单位:s)');ylabel('幅度');title('原始语音信号'); >> subplot(2,2,2);plot(f,X);axis([0 4000 0 70]); grid on; %画原始语音信号幅度谱图 >> xlabel('频率(单位:Hz)');ylabel('幅度谱');title('语音信号幅度谱图'); >> subplot(2,2,3);plot(t,y); axis([0 3 -0.2 0.2]); grid on; %画加噪语音信号的时域图 >> xlabel('时间(单位:s)');ylabel('幅度');title('加入单频干扰后的语音信号'); >> subplot(2,2,4);plot(f,Y);axis([0 4000 0 70]); grid on; %画加噪语音信号幅度谱图 >>xlabel('频率(单位:Hz)');ylabel('幅度谱');title('加入干扰后的语音信号幅度谱图'); 附录2:滤波器设计源程序 % 程序名称:滤波器的设计 % 程序功能:用凯塞窗设计一个FIR带阻滤波器。 % 程序作者: % 最后修改日期:2011-3-4 >>fp1=900;fs1=950;fs2=1050;fp2=1100;Rp=1;As=60; % 带阻滤波器设计指标 >>fc1=(fp1+fs1)/2;fc2=(fp2+fs2)/2; df=min((fs1-fp1),(fp2-fs2)); % 计算上下边带中心频率,和频率间隔 >>wc1=fc1/fs*2*pi;wc2=fc2/fs*2*pi; dw=df/fs*2*pi; %将Hz为单位的模拟频率换算为rad为单位的数字频率 >>ws1=fs1/fs*2*pi;ws2=fs2/fs*2*pi; >>M=ceil((As-7.95)/(2.285* dw)+1)+1; % 计算汉宁窗设计该滤波器时需要的阶数 >>n=0:M-1; beta=0.1102*(As-8.7); % 定义时间范围 >>w_kaiser= kaiser(M,beta); % 产生M阶的凯塞窗 >>hd_bs=ideal_lp(wc1,M)+ideal_lp(pi,M)-ideal_lp(wc2,M); % 调用自编函数计算理想带阻滤波器的脉冲响应 >>h_bs=w_kaiser'.*hd_bs; % 用窗口法计算实际滤波器脉冲响应 >> [db,mag,pha,grd,w]=freqz_m(h_bs,1); % 调用自编函数计算滤波器的频率特性 >> Rp=-min(db(wc1/dw+1:1:wc2/dw)); As=max(-round(db(ws2/dw+1:1:501))); >> subplot(2,2,1);plot(w/pi,db);axis([0 0.2 -70 10]); >>xlabel('w/pi');ylabel('dB');title('滤波器幅度响应图');grid on; >> subplot(2,2,2);plot(w/pi,mag);axis([0 0.2 0 1.2]); >>xlabel('w/pi');ylabel('幅度mag');title('滤波器幅度响应图');grid on; >> subplot(2,2,3);plot(w/pi,pha);axis([0 1 -3 3]); >>xlabel('w/pi');ylabel('相位pha');title('滤波器相位响应图');grid on; >>subplot(2,2,4);stem(n,h_bs);axis([0 1500 0 1]); >>xlabel('n');ylabel('h(n)');title('滤波器肪冲响应图');grid on; 附录3:信号滤波处理源程序 % 程序名称:语音信号滤波 % 程序功能:用设计好的滤波器对语音信号进行滤波,并画出滤波前后语音信号的时域波形和频谱对比图 % 程序作者: % 最后修改日期:2011-3-4 >>y_fil=fftfilt (h_bs, y); % 用设计好的滤波器对y进行滤波 >>Y_fil=fft(y_fil);Y_fil=Y_fil(1:N/2); % 计算频谱取前一半 >> subplot(3,2,1);plot(t,x); axis([0 3 -0.2 0.2]); >> xlabel('时间(单位:s)');ylabel('幅度');title('原始语音信号x');grid on; >> subplot(3,2,2);plot(f,X);axis([0 4000 0 70]); >> xlabel('频率(单位:Hz)');ylabel('幅度谱');title('语音信号幅度谱X');grid on; >> subplot(3,2,3);plot(t,y); axis([0 3 -0.2 0.2]); >> xlabel('时间(单位:s)');ylabel('幅度');title('加干扰后的语音信号x1');grid on; >> subplot(3,2,4);plot(f,Y);axis([0 4000 0 70]); >> xlabel('频率(单位:Hz)');ylabel('幅度谱');title('加干扰语音信号幅度谱X1');grid on; >>subplot(3,2,5);plot(t,y_fil);axis([0 3 -0.2 0.2]) >> xlabel('时间(单位:s)');ylabel('幅度');title('滤波后语音信号y');grid on; >> subplot(3,2,6);plot(f,Y_fil); axis([0 4000 0 70]) >> xlabel('频率(单位:Hz)');ylabel('幅度谱');title('滤波后语音信号幅度谱Y');grid on; >> sound (y_fil,fs,bits) 附录4:滤波器脉冲响应源程序 % 程序名称:滤波器脉冲响应 % 程序功能: 信号滤波去噪时调用该函数计算理想带阻滤波器的脉冲响应 % 程序作者: % 最后修改日期:2011-3-4 function [db,mag,pha,grd,w] = freqz_m(b,a); % freqz 子程序的改进版本 % ------------------------------------ % [db,mag,pha,grd,w] = freqz_m(b,a); % db = [0 到pi弧度]区间内的相对振幅(db) % mag = [0 到pi弧度]区间内的绝对振幅 % pha = [0 到pi弧度]区间内的相位响应 % grd = [0 到pi弧度]区间内的群迟延 % w = [0 到pi弧度]区间内的501个频率样本向量 % b = Ha(z)的分子多项式系数(对FIR b=h) % a = Ha(z)的分母多项式系数(对 FIR: a=[1]) % [H,w] = freqz(b,a,1000,'whole'); H = (H(1:1:501))'; w = (w(1:1:501))'; mag = abs(H); db = 20*log10((mag+eps)/max(mag)); pha = angle(H); % pha = unwrap(angle(H)); grd = grpdelay(b,a,w); % grd = diff(pha); % grd = [grd(1) grd]; % grd = [0 grd(1:1:500); grd; grd(2:1:501) 0]; % grd = median(grd)*500/pi; 附录5:理想低通滤波器计算源程序 % 程序名称: 理想低通滤波器计算 % 程序功能: 信号滤波去噪时调用该函数计算理想低通滤波器的特性 % 程序作者: % 最后修改日期:2011-3-4 function hd = ideal_lp(wc,M); % 理想低通滤波器计算 % -------------------------------- % [hd] = ideal_lp(wc,M) % hd = 0 to M-1之间的理想脉冲响应 % wc = 截止频率(弧度) % M = 理想滤波器的长度 % alpha = (M-1)/2; n = [0:1:(M-1)]; m = n - alpha + eps; hd = sin(wc*m) ./ (pi*m); ...展开收缩
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 相关搜索: 滤波去噪 凯塞窗
 输入关键字,在本站1000多万海量源码库中尽情搜索: