语音信号处理 matlab_第1页
语音信号处理 matlab_第2页
语音信号处理 matlab_第3页
语音信号处理 matlab_第4页
语音信号处理 matlab_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目 录摘要-3关键词-31课程设计的目的、意义-31.1 目的-31.2 意义-32 设计任务及技术指标-32.1 设计任务-32.2技术指标-43 设计方案论证-43.1 信号的抽样与恢复-43.2 滤波器设计-43.2.1模拟滤波器设计原理-43.2.2 模拟滤波器数字化原理-53.2.3数字高通、带通、带阻滤波器的设计-54 设计内容 -64.1必选部分-642 拓展部分-65 实验结果与分析-66 总结-29参考文献-30 题目 语音信号分析系统设计摘要: 语音信号分析系统设计涵盖了基于matlab对语音信号进行处理的原理、方法及源程序,包括语音信号的采集与时域频域分析、对语音信号进行

2、加噪滤波处理、噪声滤除前后的语音进行时频域分析、语音信号的重采样和回放、语音信号部分时域参数的提取及GUI用户友好界面的实现,实现了对简单的单音节语音的综合处理与分析。 本设计程序界面简练,操作简便,有一定的实际意义。最后对语音信号的处理发展方向提出了自己的看法。关键词:语音,matlab,GUI,滤波,噪声,采样1课程设计的目的、意义1.1 目的设计一个简单的语音信号分析系统,实现对语音信号时域波形显示、进行频谱分析,利用滤波器滤除噪声、对语音信号的参数进行提取分析等功能。采用Matlab设计语言信号分析相关程序,并且利用GUI设计图形用户界面。 (1)采集语音信号。(2)对原始语音信号加入

3、干扰噪声,对原始语音信号及带噪语音信号进行时频域分析。 (3)针对语音信号频谱及噪声频率,设计合适的数字滤波器滤除噪声。 (4)对噪声滤除前后的语音进行时频域分析。 (5)对语音信号进行重采样,回放并与原始信号进行比较。 (6)对语音信号部分时域参数进行提取。 (7)设计图形用户界面(实现以上功能)。1.2 意义 本次设计基本完成了语音信号的分析与处理,在下面方面有实际意义:1. 从语音信号中得到某些语音特征参数,如:短时平均幅度,短时平均能量,短时平均过零率,短时自相关函数。2. 对原信号,带噪信号进行简单的时域频域分析。3. 分析不同采样频率下的语音信号的不同。2 设计任务及技术指标2.1

4、设计任务设计一个简单的语音信号分析系统,实现对语音信号时域波形显示、进行频谱分析,利用滤波器滤除噪声、对语音信号的参数进行提取分析等功能。采用Matlab设计语言信号分析相关程序,并且利用GUI设计图形用户界面。具体任务是:(1)采集语音信号。(2)对原始语音信号加入干扰噪声,对原始语音信号及带噪语音信号进行时频域分析。(3)针对语音信号频谱及噪声频率,设计合适的数字滤波器滤除噪声。(4)对噪声滤除前后的语音进行时频域分析。(5)对语音信号进行重采样,回放并与原始信号进行比较。(6)对语音信号部分时域参数进行提取。(7)设计图形用户界面(实现以上功能)。2.2技术指标低通滤波器的技术指标WP,

5、WS,RP,AS,采样频率的技术指标FS,帧长,帧移,帧重叠采样点数3 设计方案论证3.1 信号的抽样与恢复利用抽样脉冲把一个连续信号变为离散时间样值的过程称为抽样,在满足抽样定理条件下,抽样信号保留了原信号的全部信息,并且从抽样信号中可以无失真的恢复出原始信号。抽样定理在通信系统、信息传输理论方面占有十分重要的地位。数字通信系统是以此定理作为理论基础。抽样过程关系到通信设备整个系统的性能指标。3.2 滤波器设计3.2.1模拟滤波器设计原理(1)模拟巴特沃思滤波器原理 巴特沃斯滤波器具有单调下降的幅频特性:在小于截止频率的范围内,具有最平幅度的响应,而在后,幅频响应迅速下降。 巴特沃思低通滤波

6、器幅度平方函数为: (3-1)式中N为滤波器阶数,为3dB截止角频率。将幅度平方函数写成s的函数: (3-2) 该幅度平方函数有2N个等间隔分布在半径为的圆上的极点, 为了形成稳定的滤波器,取左半平面的N个极点构成,即: (3-3) 为使设计统一,将频率归一化,得到归一化极点,相应的归一化系统函数为: (3-4) 多项式形式为: (3-5)(2)模拟切比雪夫滤波器原理 切比雪夫滤波器的幅频特性具有等波纹特性,有两种形式,在通带内等波纹、阻带单调的是I型滤波器,在通带内单调、在阻带内等波纹的是II滤波器。以I型滤波器为例。 切比雪夫滤波器的幅度平方函数为: (3-6) 为小于1的正数,表示通带内

7、幅度波动的程度。p称为通带截止频率。令=/p,称为对p的归一化频率。CN(x)为N阶切比雪夫多项式。幅度平方函数的极点是分布在bp为长半轴,ap为短半轴的椭圆上的点。同样取s平面左半平面的极点构成: (3-7) 进行归一化,得到: (3-8)其中 , 3.2.2 模拟滤波器数字化原理 将模拟滤波器转化为数字滤波器在工程上常用的有脉冲响应不变法和双线性变换法。脉冲响应不变法时一种时域上的转换方法,它是数字滤波器的单位取样响应在抽样点上等于模拟滤波器的单位冲激响应,即: (3-9)设模拟滤波器只有单阶极点,其系统函数为: (3-10)对进行拉氏反变换得到,对进行等间隔抽样,得到,对进行Z变换,得到

8、数字滤波器系统函数: (3-11)这种方法s和z的关系是:。该方法的优点是频率坐标变换时线性的切数字滤波器的单位脉冲响应完全模仿模拟滤波器的单位冲激响应,时域特性逼近好;缺点是会产生频谱混叠现象,适合低通、带通滤波器的设计,不适合高通、带阻滤波器的设计。 双线性变换法为了克服频谱混叠现象,采用非线性频率压缩方法,将整个频率轴上的频率范围压缩到之间,再用转换到Z平面上。这种方法s和z的关系是:。该方法克服了频谱混叠现象,但带来了频率坐标变换的非线性:,由模拟滤波器系统函数转换为数字滤波器系统函数公式为: (3-12)3.2.3数字高通、带通、带阻滤波器的设计这些滤波器可以借助于模拟滤波器的频率变

9、换设计一个所需类型的模拟滤波器, 再通过双线性变换法将其转换成所需类型的数字滤波器。首先确定所需类型数字滤波器的技术指标;然后将数字滤波器技术指标按照公式转换成所需类型滤波器的模拟域技术指标;将所需类型滤波器的模拟域技术指标转换成低通滤波器技术指标;设计归一化模拟低通滤波器;去归一化得到模拟低通滤波器的系统函数;将模拟低通滤波器转换为所需类型的模拟滤波器;最后通过双线性变换法转换成所需类型的数字滤波器。4 设计内容 4.1必选部分利用MATLAB软件对语音信号进行频谱分析;并对语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声。 (1)根据设计要求分析系统功能,掌握设

10、计中所需理论、阐明设计原理(抽样频率、量化位数的概念,抽样定理;信号的FFT分析;数字滤波器设计原理和方法,各种不同类型滤波器的性能比较)。 (2)对语音信号以不同采样频率进行重采样,回放并与原始信号进行比较(如原语音信号采样频率为16KHz,对其进行8KHz,4KHz的重采样)。(3)对语音信号做FFT,进行频谱分析,画出信号的时域波形图和频谱图。(4)对语音信号加入干扰噪声,对语音信号进行回放(利用sound函数),感觉加噪前后声音的变化。对其做FFT,进行频谱分析,比较加噪前后语音信号的波形及频谱,对所得结果进行分析。(5)根据带噪语音信号的特点,设计合适的数字滤波器,绘制所设计滤波器的

11、幅频和相频特性。(6)用所设计的滤波器对带噪语音信号进行滤波。对滤波后的语音信号进行FFT频谱分析。记录处理过程中所得各种波形及频谱图。(7)对语音信号进行回放,感觉滤波前后声音的变化。比较滤波前后语音信号的波形及频谱,对所得结果和滤波器性能进行频谱分析。42 拓展部分利用GUI设计简单的图形用户界面。要求主界面上包括语音文件的显示及播放按钮,滤波器设计时所需参数设置及滤波功能按钮。滤波前后语音信号时域波形及频谱的显示,滤波器幅频特性的显示等功能可包含在主界面中,也可在新建图形窗口中完成。5 实验结果与分析 实验前须定义的函数:(1) 分帧函数:function f=fra(len,inc,x

12、) fh=fix(size(x,1)-len)/inc)+1)f=zeros(fh,len);i=1;n=1;while i<=fh j=1; while j<=len f(i,j)=x(n); j=j+1;n=n+1; end n=n-len+inc; i=i+1;End(2) 从模拟到数字滤波器的变换:function b,a=imp_invr(c,d,T)R,p,k=residue(c,d); p=exp(p*T); b,a=residuez(R,p,k); b=real(b'); a=real(a');(3)获得滤波器的幅值响应、相位响应及群延迟响应:fun

13、ctiondb,mag,pha,w=freqz_m(b,a);H,w=freqz(b,a,1000,'whole');H=(H(1:500)'w=(w(1:500)'mag=abs(H);db=20*log10(mag+eps)/max(mag);pha=angle(H);(4)非归一化巴特沃斯低通滤波器原型设计函数function b,a=u_buttap(N,Omegac)z,p,k=buttap(N); p=p*Omegac; k=k*OmegacN;B=real(poly(z); b=k*B;a=real(poly(p); (5)巴特沃斯低通滤波器原型设

14、计函数:function b,a=afd_butt(Wp,Ws,Rp,As)N=ceil(log10(10(Rp/10)-1)/(10(As/10)-1)/(2*log10(Wp/Ws);fprintf('n Butterworth Filter Order=%2.0fn',N)OmegaC=Wp/(10(Rp/10)-1)(1/(2*N) b,a=u_buttap(N,OmegaC);(6)巴特沃斯滤波器:wp=0.2*pi;ws=0.3*pi;Rp=1;As=15;T=1;OmegaP=(2/T)*tan(wp/2);OmegaS=(2/T)*tan(ws/2);cs,ds

15、=afd_butt(OmegaP,OmegaS,Rp,As);b,a=bilinear(cs,ds,T);db,mag,pha,w=freqz_m(b,a);subplot(2,1,1);plot(w/pi,mag);title('digital filter Magnitude Response'); axis(0,1,0,1.1)subplot(2,1,2);plot(w/pi,db);title('digital filter Magnitude in DB'); axis(0,1,-40,5);(7) 非归一化切比雪夫低通滤波器原型设计函数:functi

16、on b,a=u_chb1ap(N,Rp,Omegac)z,p,k=cheb1ap(N,Rp); a=real(poly(p); aNn=a(N+1); p=p*Omegac;a=real(poly(p);aNu=a(N+1);k=k*aNu/aNn;B=real(poly(z);b=k*B;(8) 切比雪夫滤波器:wp=0.2*pi;ws=0.3*pi;Rp=1;As=15;T=1;OmegaP=(2/T)*tan(wp/2);OmegaS=(2/T)*tan(ws/2);ep=sqrt(10(Rp/10)-1);Ripple=sqrt(1/(1+ep*ep);Attn=1/(10(As/2

17、0);A1=1/Attn;a1=sqrt(A1*A1-1)/ep;a2=OmegaS/OmegaP;N=ceil(logm(a1+sqrt(a1*a1-1)/logm(a2+sqrt(a2*a2-1);fprintf('n Chebyshev Filter Order=%2.0fn',N)cs,ds=u_chb1ap(N,Rp,OmegaP);b,a=bilinear(cs,ds,T)db,mag,pha,w=freqz_m(b,a);subplot(2,1,1);plot(w/pi,mag);title('digital filter Magnitude Respon

18、se'); axis(0,1,0,1.1)subplot(2,1,2);plot(w/pi,db);title('digital filter Magnitude in DB'); axis(0,1,-40,5);实验源程序:(1)对语音1.wav进行fs=16k的采集,包含时域频域分析:y,fs=wavread('1.wav');sound(y,fs);subplot(2,1,1);plot(y);title('原始信号波形');xlabel('时间');ylabel('幅度');subplot(2,1,

19、2);Y=fft(y);plot(abs(Y);title('原始信号频谱');xlabel('时间');ylabel('幅度');结果:(2) 对语音信号以不同采样频率进行重采样,回放并与原始信号进行比较(如原语音信号采样频率为16KHz,对其进行8KHz,4KHz的重采样):y,fs=wavread('1.wav');sound(y,fs);pause(1)subplot(3,2,1);plot(y);title('原始信号波形(16k)');xlabel('时间');ylabel('幅

20、度');subplot(3,2,2);Y=fft(y);plot(abs(Y);title('原始信号频谱(16k)');xlabel('时间');ylabel('幅度');y2=resample(y,1,2);sound(y2,fs/2);pause(1)subplot(3,2,3);plot(y2);title('原始信号波形(8k)');xlabel('时间');ylabel('幅度');subplot(3,2,4);Y2=fft(y2);plot(abs(Y2);title('

21、;原始信号频谱(8k)');xlabel('时间');ylabel('幅度');y3=resample(y,1,4);sound(y3,fs/4);pause(1)subplot(3,2,5);plot(y3);title('原始信号波形(4k)');xlabel('时间');ylabel('幅度');subplot(3,2,6);Y3=fft(y3);plot(abs(Y3);title('原始信号频谱(4k)');xlabel('时间');ylabel('幅度&#

22、39;); 分析:(3) 对语音信号加入干扰噪声0.02*cos(1000*t),对语音信号进行回放(利用sound函数),感觉加噪前后声音的变化。对其做FFT,进行频谱分析,比较加噪前后语音信号的波形及频谱:y,fs=wavread('1.wav');sound(y,fs);n=0:(length(y)-1);t=0.01*n;noise=0.02*cos(1000*t);Si=y+noise'pause(1)sound(Si,fs);subplot(2,1,1);plot(Si);title('加噪语音信号时域波形');xlabel('时间&

23、#39;);ylabel('幅度');subplot(2,1,2);S=fft(Si);plot(abs(S);title('加噪语音信号频谱波形');xlabel('时间');ylabel('幅度');分析:(4) 设计合适的数字滤波器,绘制所设计滤波器的幅频和相频特性,并对带噪语音信号进行滤波,对滤波后的语音信号进行FFT频谱分析:x,fs=wavread('1.wav');sound(x,fs);pause(1)n=0:(length(y)-1);t=0.01*n;noise=0.02*cos(1000*t)

24、;y=x+noise'sound(y,fs);pause(1)k=0:N-1;w=(2*pi/N)*k;f=w*fs/(2*pi);subplot(2,2,1)plot(y)title('滤波前的时域波形')subplot(2,2,2)Y=fft(y);plot(abs(Y)title('滤波前的频域波形')wpd=2*pi*50/1000;wsd=2*pi*70/1000;%确定截止频率 Btd=wsd - wpd; %计算过渡带宽 wcd=(wsd+wpd)/2/pi;%计算3db截止频率Md=ceil(6.6*pi/Btd);hnd=fir1(Md

25、,wcd);yyd=filter(hnd,1,y);sound(yyd,fs);pause(1)subplot(2,2,3)plot(yyd)title('滤波后的时域波形')YYd=fft(yyd);subplot(2,2,4)plot(abs(YYd)title('滤波后的频域波形')分析:(5) 对语音信号部分时域参数进行提取:短时平均幅度:x,fs=wavread('1.wav');len=500;inc=500;fx=fra(len,inc,x);N=size(fx,1);Mn=zeros(1,N);for n=1:N; xn=fx(n

26、,:); xn=abs(xn); mn=sum(xn); Mn(1,n)=mn;endplot(Mn),title('短时平均幅度');短时平均过零率:x,fs=wavread('1.wav');len=500;inc=500;fx=fra(len,inc,x);N=size(fx,1);Zn=zeros(1,N);for n=1:N xn=fx(n,:); zn=zeros(1,len-1); for m=1:len-1 zn_m=sign(xn(m+1)-sign(xn(m); zn_m=(1/2)*abs(zn_m); zn(1,m)=zn_m; end

27、Zn(1,n)=sum(zn);endplot(Zn),title('短时平均过零率');短时自相关函数:x,fs=wavread('1.wav');len=500;inc=500;fx=fra(len,inc,x);N=size(fx,1);Rn=zeros(1,N);for n=1:N k=n; xn=fx(n,:); xn1=fx(k+1:len),zeros(1,k); xn2=xn.*xn1; Rn(k)=sum(xn2);endplot(Rn),title('短时自相关函数');短时平均能量:x,fs=wavread('1.w

28、av');len=500;inc=500;fx=fra(len,inc,x);N=size(fx,1);En=zeros(1,N);for n=1:N; xn=fx(n,:); xn=abs(xn); energy=sum(xn.2); En(1,n)=energy;endplot(En),title('短时平均能量');分析:(6) 设计图形用户界面GUI(实现以上功能):function varargout = guide_all(varargin)gui_Singleton = 1;gui_State = struct('gui_Name', mf

29、ilename, . 'gui_Singleton', gui_Singleton, . 'gui_OpeningFcn', guide_all_OpeningFcn, . 'gui_OutputFcn', guide_all_OutputFcn, . 'gui_LayoutFcn', , . 'gui_Callback', );if nargin && ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);end if nar

30、gout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);endfunction guide_all_OpeningFcn(hObject, eventdata, handles, varargin)handles.output = hObject;guidata(hObject, handles); function varargout = guide_all_OutputFcn(hObject, eventdata, handles) varargou

31、t1 = handles.output; function edit1_Callback(hObject, eventdata, handles)f_name=get(hObject,'String');handles.f_name=f_name;guidata(hObject,handles);function edit1_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,'BackgroundColor','white');else set(hObject,'Backg

32、roundColor',get(0,'defaultUicontrolBackgroundColor');end function edit2_Callback(hObject, eventdata, handles)wn=str2double(get(hObject,'String');if isnan(wn) %nannot a number¨ errordlg('You must entry a number value','Bad Input','modal') %¨endhan

33、dles.wn=wn;guidata(hObject,handles);function edit2_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,'BackgroundColor','white');else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor');endfunction pushbutton1_Callback(hObject, eventdata, han

34、dles)figure(1)y=wavread(handles.f_name);sound(y,16000);subplot(2,1,1);plot(y);title('原始信号波形');xlabel('时间');ylabel('幅度');subplot(2,1,2);Y=fft(y);plot(abs(Y);title('原始信号频谱');xlabel('时间');ylabel('幅度');function pushbutton2_Callback(hObject, eventdata, hand

35、les)wn=handles.wn;y,fs=wavread(handles.f_name);n=0:(length(y)-1);t=0.01*n;noise=0.02*cos(wn*t);Si=y+noise'pause(1)sound(Si,fs);figure(2)subplot(2,1,1);plot(Si);title('加噪语音信号时域波形');xlabel('时间');ylabel('幅度');subplot(2,1,2);S=fft(Si);plot(abs(S);title('加噪语音信号频谱波形');x

36、label('时间');ylabel('幅度');function pushbutton3_Callback(hObject, eventdata, handles)x,fs=wavread(handles.f_name);wn=handles.wn;n=0:(length(x)-1);t=0.01*n;noise=0.02*cos(wn*t);xs=x+noise'len=800;inc=800;fx=fra(len,inc,x);fxs=fra(len,inc,xs);N=size(fx,1);Mn=zeros(1,N);Mns=zeros(1,N)

37、;for n=1:N; xn=fx(n,:); xn=abs(xn); mn=sum(xn); Mn(1,n)=mn; xns=fxs(n,:); xns=abs(xns); mns=sum(xns); Mns(1,n)=mns;endfigure(3)subplot(2,1,1);plot(Mn),title('短时平均幅度');subplot(2,1,2);plot(Mns),title('短时平均幅度(带噪)');function pushbutton4_Callback(hObject, eventdata, handles)x,fs=wavread(h

38、andles.f_name);wn=handles.wn;n=0:(length(x)-1);t=0.01*n;noise=0.02*cos(wn*t);xs=x+noise'len=800;inc=800;fx=fra(len,inc,x);fxs=fra(len,inc,xs);N=size(fx,1);En=zeros(1,N);Ens=zeros(1,N);for n=1:N; xn=fx(n,:); xn=abs(xn); energy=sum(xn.2); En(1,n)=energy; xns=fxs(n,:); xns=abs(xns); energys=sum(xns

39、.2); Ens(1,n)=energys;endfigure(4)subplot(2,1,1);plot(En),title('短时平均能量');subplot(2,1,2);plot(Ens),title('短时平均能量(带噪)');function pushbutton5_Callback(hObject, eventdata, handles)x,fs=wavread(handles.f_name);wn=handles.wn;n=0:(length(x)-1);t=0.01*n;noise=0.02*cos(wn*t);xs=x+noise'l

40、en=800;inc=800;fx=fra(len,inc,x);fxs=fra(len,inc,xs);N=size(fx,1);Zn=zeros(1,N);Zns=zeros(1,N);for n=1:N xn=fx(n,:); zn=zeros(1,len-1); for m=1:len-1 zn_m=sign(xn(m+1)-sign(xn(m); zn_m=(1/2)*abs(zn_m); zn(1,m)=zn_m; end Zn(1,n)=sum(zn); xns=fxs(n,:); zns=zeros(1,len-1); for m=1:len-1 zn_ms=sign(xns(

41、m+1)-sign(xns(m); zn_ms=(1/2)*abs(zn_ms); zns(1,m)=zn_ms; end Zns(1,n)=sum(zns);endfigure(5)subplot(2,1,1);plot(Zn),title('短时平均过零率');subplot(2,1,2);plot(Zns),title('短时平均过零率(带噪)');function pushbutton6_Callback(hObject, eventdata, handles)x,fs=wavread(handles.f_name);wn=handles.wn;n=0:

42、(length(x)-1);t=0.01*n;noise=0.02*cos(wn*t);xs=x+noise'len=800;inc=800;fx=fra(len,inc,x);fxs=fra(len,inc,xs);N=size(fx,1);Rn=zeros(1,N);Rns=zeros(1,N);for n=1:N k=n; xn=fx(n,:); xn1=fx(k+1:len),zeros(1,k); xn2=xn.*xn1; Rn(k)=sum(xn2); xns=fxs(n,:); xn1s=fxs(k+1:len),zeros(1,k); xn2s=xns.*xn1s; R

43、ns(k)=sum(xn2s);endfigure(6)subplot(2,1,1);plot(Rn),title('短时自相关函数');subplot(2,1,2);plot(Rns),title('短时自相关函数(带噪)');function radiobutton1_Callback(hObject, eventdata, handles)if (get(hObject,'Value') = get(hObject,'Max')figure(8)x0,fs=wavread(handles.f_name);wn=handles

44、.wn;n=0:(length(x0)-1);t=0.01*n;noise=0.02*cos(wn*t);x=x0+noise'sound(x,fs);pause(1)subplot(2,2,1)plot(x),title('滤波前的时域波形');X=fft(x)subplot(2,2,2)plot(abs(X),title('滤波前的频域波形');wp=handles.wp;ws=handles.ws;Rp=handles.Rp;As=handles.As;T=1;OmegaP=(2/T)*tan(wp/2);OmegaS=(2/T)*tan(ws/2

45、);ep=sqrt(10(Rp/10)-1);Ripple=sqrt(1/(1+ep*ep);Attn=1/(10(As/20);A1=1/Attn;a1=sqrt(A1*A1-1)/ep;a2=OmegaS/OmegaP;N=ceil(logm(a1+sqrt(a1*a1-1)/logm(a2+sqrt(a2*a2-1);fprintf('n Butterworth Filter Order=%2.0fn',N)cs,ds=afd_butt(OmegaP,OmegaS,Rp,As);b,a=bilinear(cs,ds,T);y=filter(b,a,x);sound(y,f

46、s);Y=fft(y);subplot(2,2,3)plot(y),title('巴特沃斯后的时域波形');subplot(2,2,4)plot(abs(Y),title('巴特沃斯后的频域波形');endfunction radiobutton2_Callback(hObject, eventdata, handles)if (get(hObject,'Value') = get(hObject,'Max')figure(9)x0,fs=wavread(handles.f_name);wn=handles.wn;n=0:(len

47、gth(x0)-1);t=0.01*n;noise=0.02*cos(wn*t);x=x0+noise'sound(x,fs);pause(1)subplot(2,2,1)plot(x),title('滤波前的时域波形');X=fft(x)subplot(2,2,2)plot(abs(X),title('滤波前的频域波形');wp=handles.wp;ws=handles.ws;Rp=handles.Rp;As=handles.As;T=1;OmegaP=(2/T)*tan(wp/2);OmegaS=(2/T)*tan(ws/2);ep=sqrt(10

48、(Rp/10)-1);Ripple=sqrt(1/(1+ep*ep);Attn=1/(10(As/20);A1=1/Attn;a1=sqrt(A1*A1-1)/ep;a2=OmegaS/OmegaP;N=ceil(logm(a1+sqrt(a1*a1-1)/logm(a2+sqrt(a2*a2-1);fprintf('n Chebyshev Filter Order=%2.0fn',N)cs,ds=u_chb1ap(N,Rp,OmegaP);b,a=bilinear(cs,ds,T)y=filter(b,a,x);sound(y,fs);Y=fft(y);subplot(2,2

49、,3)plot(y),title('切比雪夫后的时域波形');subplot(2,2,4)plot(abs(Y),title('切比雪夫后的频域波形');endfunction edit3_Callback(hObject, eventdata, handles)wp=str2double(get(hObject,'String');if isnan(wp) %nannot a number¨ errordlg('You must entry a number value','Bad Input',

50、9;modal') %¨endhandles.wp=wp;guidata(hObject,handles);function edit3_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white');else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor');end function edit4_Callback(

51、hObject, eventdata, handles)ws=str2double(get(hObject,'String');if isnan(ws) errordlg('You must entry a number value','Bad Input','modal') %endhandles.ws=ws;guidata(hObject,handles);function edit4_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,'Backgrou

52、ndColor','white');else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor');end function edit5_Callback(hObject, eventdata, handles)Rp=str2double(get(hObject,'String');if isnan(Rp) errordlg('You must entry a number value','Bad Input','modal') %endhandles.Rp=Rp;guidata(hObject,handles);function edit5_CreateFcn(hObject

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论