基于matlab的濾波器課程設(shè)計_第1頁
已閱讀1頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p><b>  課 程 設(shè) 計</b></p><p>  課程名稱 數(shù)字信號處理 </p><p>  題目名稱應(yīng)用Matlab對語音信號進行頻譜分析及濾波</p><p>  學(xué)生學(xué)院 信息工程學(xué)院 </p><p>  專業(yè)班級

2、 </p><p>  學(xué) 號 </p><p>  學(xué)生姓名 </p><p>  指導(dǎo)教師 </p><p>  2011 年 1 月 4

3、 日</p><p><b>  一、設(shè)計題目</b></p><p>  應(yīng)用Matlab對語音信號進行頻譜分析及濾波</p><p><b>  二、設(shè)計目的</b></p><p>  1、進一步鞏固數(shù)字信號處理的基本概念、理論、分析方法和實現(xiàn)方法;</p><p> 

4、 2、增強應(yīng)用Matlab語言編寫數(shù)字信號處理的應(yīng)用程序及分析、解決實際問題的能力;</p><p>  3、掌握用MATLAB對采樣信號進行頻譜分析基本原理;</p><p>  4、學(xué)會用MATLAB設(shè)計FIR和IIR濾波器的基本方法;</p><p>  5、學(xué)會用MATLAB的GUI功能設(shè)計用戶界面。</p><p><b>

5、;  三、設(shè)計內(nèi)容</b></p><p>  1、語音信號的采集;</p><p>  2、語音信號的頻譜分析;</p><p>  3、設(shè)計數(shù)字濾波器和畫出其頻率響應(yīng);</p><p>  4、用濾波器對信號進行濾波;</p><p>  5、比較濾波前后語音信號的波形及頻譜;</p>&

6、lt;p><b>  6、設(shè)計系統(tǒng)界面;</b></p><p><b>  7、回放語音信號。</b></p><p><b>  四、設(shè)計結(jié)果分析</b></p><p><b>  1、主界面截圖</b></p><p>  其中上面兩個大圖是

7、輸入信號的頻譜分析;下面的則是輸出信號的頻譜分析;右邊兩個小圖是濾波器函數(shù)的圖像。右邊界面可以選擇濾波器的參數(shù)。本程序具有錄音、載入音頻、設(shè)計各種濾波器、濾波、回放濾波后的聲音等功能。</p><p>  2、用窗函數(shù)法和雙線性變換法設(shè)計下面要求的3種濾波器。</p><p>  (1)低通濾波器性能指標fb=1 000 Hz,fc=1 200 Hz,As=100 dB,Ap=1 dB。&

8、lt;/p><p>  (2)高通濾波器性能指標fc=4 800 Hz,fb=5 000 Hz As=100 dB,Ap=1 dB。</p><p>  (3)帶通濾波器性能指標fb1=1 200 Hz,fb2=3 000 Hz,fc1=1 000 Hz,fc2=3 200 Hz,As=100 dB,Ap=1 dB。</p><p>  本次設(shè)計利用函數(shù)fir1設(shè)計FI

9、R濾波器,利用函數(shù)ellip設(shè)計IIR濾波器。</p><p><b> ?、買IR低通</b></p><p><b> ?、贔IR低通</b></p><p>  分析:對于不同濾波器而言,每個頻率的信號的減弱程度不同。當?shù)屯V波器使用在音頻應(yīng)用時,它有時被稱為高頻剪切濾波器, 或高音消除濾波器。從上面的IIR與FIR

10、低通濾波器頻譜分析圖中可以看出,音頻的高頻部分被濾掉了,輸出的聲音低沉,且聲音信號有失真。</p><p><b> ?、跧IR高通</b></p><p><b>  ④FIR高通</b></p><p>  分析:高通濾波器的作用是濾去音頻信號中的低音成分,增強中音和高音成分以驅(qū)動揚聲器的中音和高音單元。有時被稱為低頻

11、剪切濾波器, 或低音消除濾波器。從上面的頻譜分析圖中可以看出,聲音信號的低頻部分被濾除了,輸出的聲音高昂刺耳。同時還可以看出聲音信號有失真。</p><p><b> ?、軮IR帶通</b></p><p><b> ?、轋IR帶通</b></p><p>  分析:帶通濾波器的作用是將頻帶外的頻段濾除,即可濾除低頻和高頻

12、成分,保留聲音信號的中間頻段,除去了高音與低音,增強了中音成分,聲音清晰。</p><p><b>  五、設(shè)計心得體會</b></p><p> ?。?)從電腦上錄取一段音頻后,將信號載入設(shè)計的濾波器中進行濾波。通過觀察圖像、回放濾波后的音頻來作分析。原始音頻信號經(jīng)過濾波器后輸出的信號受到濾波器的濾波作用,把高頻或低頻分量濾掉,出來的信號一個是帶限信號,頻帶在一定范

13、圍內(nèi)。濾波后的波形還伴隨著一定的失真,使得聲音信號有些音質(zhì)上的變化。為了減少這種失真,我們可以選擇不同的濾波器,設(shè)置不同的參數(shù)來測試各種性能,最終是信號的濾波作用達到最佳。</p><p> ?。?)在設(shè)計用戶界面時,由于是第一次接觸GUI,我下了很大的功夫查閱資料和查看幫助文件。在弄清楚雙線性變換法設(shè)計IIR濾波器和窗函數(shù)法設(shè)計FIR濾波器的基本概念之后,我用了2天時間在做濾波器的,忽略了用戶界面的設(shè)計。等真正

14、在做用戶界面時才發(fā)現(xiàn)原來GUI設(shè)計界面、布局、寫入邏輯語句等才是設(shè)計的重點。為了構(gòu)建一個實用好看的界面,我又通過網(wǎng)絡(luò)和幫助文件深入的了解了GUI。搞定一切之后,敲入所構(gòu)思的程序,一個具有錄音、濾波、頻譜分析的用戶界面誕生了。通過此次設(shè)計,我認識到MATLAB的幫助文件真是學(xué)習(xí)MATLAB的好工具,它在整個設(shè)計過程中幫了我很多,而且讓我的英語水平也有了提高。</p><p><b>  六、參考文獻<

15、;/b></p><p> ?。?]程佩青 清華大學(xué)出版社,2009.  </p><p>  附錄:function varargout = NEWS(varargin)</p><p>  gui_Singleton = 1;</p><p>  gui_State = struct('gui_Name',

16、 mfilename, ...</p><p>  'gui_Singleton', gui_Singleton, ...</p><p>  'gui_OpeningFcn', @NEWS_OpeningFcn, ...</p><p>  'gui_OutputFcn', @NEWS_OutputFcn,

17、...</p><p>  'gui_LayoutFcn', [] , ...</p><p>  'gui_Callback', []);</p><p>  if nargin && ischar(varargin{1})</p><p>  gui_State.gui_Callbac

18、k = str2func(varargin{1});</p><p><b>  end</b></p><p>  if nargout</p><p>  [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});</p><p><b>  

19、else</b></p><p>  gui_mainfcn(gui_State, varargin{:});</p><p><b>  end</b></p><p>  function NEWS_OpeningFcn(hObject, eventdata, handles, varargin)</p><

20、p>  handles.output = hObject;</p><p>  guidata(hObject, handles);</p><p>  function varargout = NEWS_OutputFcn(hObject, eventdata, handles) </p><p>  varargout{1} = handles.outpu

21、t;</p><p>  function pm1_Callback(hObject, eventdata, handles)</p><p>  val = get(hObject,'Value');</p><p>  str = get(hObject, 'String');</p><p>  swit

22、ch str{val};</p><p>  case 'IIR Filter' % User selects Filter Type</p><p>  handles.yhx1 = 1;</p><p>  set(handles.p6,'enable','off');</p><p>  

23、set(handles.pm2,'enable','on');</p><p>  case 'FIR Filter' % User selects Filter Type</p><p>  handles.yhx1 = 2;</p><p>  set(handles.p6,'enable',

24、9;on');</p><p>  set(handles.pm2,'enable','off');</p><p>  case 'Filter Type' % Error Warning</p><p>  errordlg('You Must Choose The Filter Type '

25、;,' Error');</p><p><b>  end</b></p><p>  guidata(hObject,handles)</p><p>  function pm1_CreateFcn(hObject, eventdata, handles)</p><p>  if ispc &am

26、p;& isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))</p><p>  set(hObject,'BackgroundColor','white');</p><p><b>  end&l

27、t;/b></p><p>  function pm2_Callback(hObject, eventdata, handles)</p><p>  val1 = get(hObject,'Value');</p><p>  str1 = get(hObject, 'String');</p><p&g

28、t;  switch str1{val1};</p><p>  case 'Buttord' % User selects Filter Function</p><p>  handles.yhx2 = 1;</p><p>  case 'Cheb1ord' % User selects Filter Function</

29、p><p>  handles.yhx2 = 2;</p><p>  case 'Cheb2ord' % User selects Filter Function</p><p>  handles.yhx2 = 3;</p><p>  case 'Ellipord' % User selects Filter

30、 Function</p><p>  handles.yhx2 = 4;</p><p>  case 'Filter Function' % Error Warning</p><p>  errordlg('You Must Choose The Filter Function ',' Error');</

31、p><p><b>  end</b></p><p>  guidata(hObject,handles)</p><p>  function pm2_CreateFcn(hObject, eventdata, handles)</p><p>  if ispc && isequal(get(hObje

32、ct,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))</p><p>  set(hObject,'BackgroundColor','white');</p><p><b>  end</b></p><p

33、>  function p6_Callback(hObject, eventdata, handles)</p><p>  val2 = get(hObject,'Value');</p><p>  str2 = get(hObject,'String');</p><p>  switch str2{val2};</

34、p><p>  case'Rectwin'</p><p>  handles.yhx3 = 0; % User selects Window Function</p><p>  case'Bartlett'</p><p>  handles.yhx3 = 1; % User selects Window Fu

35、nction</p><p>  case'Hann'</p><p>  handles.yhx3 = 2; % User selects Window Function</p><p>  case'Hamming'</p><p>  handles.yhx3 = 3; % User selects Wi

36、ndow Function</p><p>  case'Blackman'</p><p>  handles.yhx3 = 4; % User selects Window Function</p><p>  case'Kaiserord'</p><p>  handles.yhx3 = 5; % Us

37、er selects Window Function</p><p>  case'Window Function'</p><p>  errordlg('You Must Choose The Window Function','ERROR');</p><p><b>  end</b>&l

38、t;/p><p>  guidata(hObject,handles);</p><p>  function p6_CreateFcn(hObject, eventdata, handles)</p><p>  if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'

39、defaultUicontrolBackgroundColor'))</p><p>  set(hObject,'BackgroundColor','white');</p><p><b>  end</b></p><p>  function pm4_Callback(hObject, event

40、data, handles)</p><p>  val3 = get(hObject,'Value');</p><p>  str3 = get(hObject, 'String');</p><p>  switch str3{val3};</p><p>  case 'Lowpass'

41、 % User selects Passband Type</p><p>  handles.yhx4 = 1;</p><p>  set(handles.edit4,'enable','off');</p><p>  set(handles.edit4,'backgroundcolor',[0.90,0.90,

42、0.90]);</p><p>  set(handles.edit5,'enable','off');</p><p>  set(handles.edit5,'backgroundcolor',[0.90,0.90,0.90]);</p><p>  case 'Highpass' % User s

43、elects Passband Type</p><p>  handles.yhx4 = 2;</p><p>  set(handles.edit4,'enable','off');</p><p>  set(handles.edit5,'enable','off');</p>&l

44、t;p>  set(handles.edit4,'backgroundcolor',[0.90,0.90,0.90]);</p><p>  set(handles.edit5,'backgroundcolor',[0.90,0.90,0.90]);</p><p>  case 'Bandpass' % User selects Pa

45、ssband Type</p><p>  handles.yhx4 = 3;</p><p>  set(handles.edit4,'enable','on');</p><p>  set(handles.edit5,'enable','on');</p><p>  se

46、t(handles.edit4,'backgroundcolor','white');</p><p>  set(handles.edit5,'backgroundcolor','white');</p><p>  case 'Passband Type' % Error Warning</p>

47、<p>  errordlg('You Must Choose The Passband Type',' Error');</p><p><b>  end</b></p><p>  guidata(hObject,handles)</p><p>  function pm4_CreateFc

48、n(hObject, eventdata, handles)</p><p>  if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))</p><p>  set(hObject,'BackgroundC

49、olor','white');</p><p><b>  end</b></p><p>  function pushbutton3_Callback(hObject, eventdata, handles)</p><p>  handles.Fs=str2double(get(handles.edit1,'

50、;String')); %Sampling frequency</p><p>  guidata(hObject,handles);</p><p>  Fc1=str2double(get(handles.edit2,'string')); %Passband cut-off frequency</p><p>  Fst1

51、=str2double(get(handles.edit3,'string')); %Stopband cut-off frequency</p><p>  Fc2=str2double(get(handles.edit4,'string')); </p><p>  Fst2=str2double(get(handles.edit5,'

52、;string'));</p><p>  Rp=str2double(get(handles.edit6,'string')); %The maximum passband ripple </p><p>  Rs=str2double(get(handles.edit7,'string')); %The minim

53、um stopband attenuation</p><p>  Wp1=Fc1/(handles.Fs/2);</p><p>  Ws1=Fst1/(handles.Fs/2);</p><p>  Wp2=Fc2/(handles.Fs/2);</p><p>  Ws2=Fst2/(handles.Fs/2);</p>

54、<p>  switch handles.yhx1 %User selects the Filter Type</p><p><b>  case(1)</b></p><p>  switch handles.yhx2 %User selects the Filter Function</p><p><b>

55、  case(1)</b></p><p>  switch handles.yhx4 % User selects Passband Type</p><p><b>  case(1)</b></p><p>  ftype='low';</p><p><b>  case(

56、2)</b></p><p>  ftype='high';</p><p><b>  case(3)</b></p><p>  Wp1=[Wp1 Wp2];</p><p>  Ws1=[Ws1 Ws2];</p><p>  ftype='bandpas

57、s';</p><p><b>  end</b></p><p>  [n,Wn]=buttord(Wp1,Ws1,Rp,Rs,'s'); </p><p>  [handles.b,handles.a] =butter(n,Wn,ftype);</p><p><b>  case(

58、2)</b></p><p>  switch handles.yhx4 % User selects Passband Type</p><p><b>  case(1)</b></p><p>  ftype='low';</p><p><b>  case(2)</

59、b></p><p>  ftype='high';</p><p><b>  case(3)</b></p><p>  Wp1=[Wp1 Wp2];</p><p>  Ws1=[Ws1 Ws2];</p><p>  ftype='bandpass';

60、</p><p><b>  end</b></p><p>  [n,Wn]=cheb1ord(Wp1,Ws1,Rp,Rs,'s'); </p><p>  [handles.b,handles.a] =cheby1(n,Rp,Wn,ftype);</p><p><b>  case(3)&

61、lt;/b></p><p>  switch handles.yhx4 % User selects Passband Type</p><p><b>  case(1)</b></p><p>  ftype='low';</p><p><b>  case(2)</b&g

62、t;</p><p>  ftype='high';</p><p><b>  case(3)</b></p><p>  Wp1=[Wp1 Wp2];</p><p>  Ws1=[Ws1 Ws2];</p><p>  ftype='bandpass';<

63、;/p><p><b>  end</b></p><p>  [n,Wn]=cheb2ord(Wp1,Ws1,Rp,Rs,'s'); </p><p>  [handles.b,handles.a] =cheby2(n,Rp,Wn,ftype);</p><p><b>  case(4)<

64、/b></p><p>  switch handles.yhx4 % User selects Passband Type</p><p><b>  case(1)</b></p><p>  ftype='low';</p><p><b>  case(2)</b>&

65、lt;/p><p>  ftype='high';</p><p><b>  case(3)</b></p><p>  Wp1=[Wp1 Wp2];</p><p>  Ws1=[Ws1 Ws2];</p><p>  ftype='bandpass';</p

66、><p><b>  end</b></p><p>  [n,Wn]=ellipord(Wp1,Ws1,Rp,Rs,'s'); </p><p>  [handles.b,handles.a] =ellip(n,Rp,Rs,Wn,ftype);</p><p><b>  end</b>

67、;</p><p>  [h,f]=freqz(handles.b,handles.a,128,handles.Fs); </p><p>  plot(handles.axes3,f,20*log10(abs(h))); %Amplitude-frequency response</p><p>  plot(handles.axes7,f,angle(h))

68、; %Phase-frequencyresponsee</p><p><b>  case(2)</b></p><p>  Wn1=(Wp1+Ws1)/2;</p><p>  Wn2=(Wp2+Ws2)/2;</p><p>  switch handles.yhx3 % User selects Wind

69、ow Function</p><p><b>  case(0)</b></p><p>  switch handles.yhx4 % User selects Passband Type </p><p><b>  case(1)</b></p><p>

70、;  dw=Ws1-Wp1; </p><p>  wtype='low';</p><p><b>  case(2)</b></p><p>  dw=Wp1-Ws1;</p><p>  wtype='high';</p><p>

71、;<b>  case(3)</b></p><p>  dw=min((Wp1-Ws1),(Ws2-Wp2));</p><p>  Wn1=[Wn1 Wn2];</p><p>  wtype='bandpass';</p><p><b>  end</b></p>

72、<p>  N = 2*ceil(1.8/dw)+1;</p><p>  window=rectwin(N);</p><p><b>  case(1)</b></p><p>  switch handles.yhx4 % User selects Passband Type</p><p><

73、;b>  case(1)</b></p><p>  dw=Ws1-Wp1;</p><p>  wtype='low';</p><p><b>  case(2)</b></p><p>  dw=Wp1-Ws1;</p><p>  wtype='h

74、igh';</p><p><b>  case(3)</b></p><p>  dw=min((Wp1-Ws1),(Ws2-Wp2));</p><p>  Wn1=[Wn1 Wn2];</p><p>  wtype='bandpass';</p><p><b

75、>  end</b></p><p>  N = 2*ceil(4.2/dw)+1;</p><p>  window=bartlett(N);</p><p><b>  case(2)</b></p><p>  switch handles.yhx4 % User selects Passba

76、nd Type</p><p><b>  case(1)</b></p><p>  dw=Ws1-Wp1;</p><p>  wtype='low';</p><p><b>  case(2)</b></p><p>  dw=Wp1-Ws1;<

77、/p><p>  wtype='high';</p><p><b>  case(3)</b></p><p>  dw=min((Wp1-Ws1),(Ws2-Wp2));</p><p>  Wn1=[Wn1 Wn2];</p><p>  wtype='bandpass&

78、#39;;</p><p><b>  end</b></p><p>  N = 2*ceil(6.2/dw)+1;</p><p>  window=hann(N);</p><p><b>  case(3)</b></p><p>  switch handles.y

79、hx4 % User selects Passband Type</p><p><b>  case(1)</b></p><p>  dw=Ws1-Wp1;</p><p>  wtype='low';</p><p><b>  case(2)</b></p>

80、<p>  dw=Wp1-Ws1;</p><p>  wtype='high';</p><p><b>  case(3)</b></p><p>  dw=min((Wp1-Ws1),(Ws2-Wp2));</p><p>  Wn1=[Wn1 Wn2];</p><

81、p>  wtype='bandpass';</p><p><b>  end</b></p><p>  N = ceil(6.6/dw)+1;</p><p>  window=hamming(N);</p><p><b>  case(4)</b></p>

82、<p>  switch handles.yhx4 % User selects Passband Type</p><p><b>  case(1)</b></p><p>  dw=Ws1-Wp1;</p><p>  wtype='low';</p><p><b> 

83、 case(2)</b></p><p>  dw=Wp1-Ws1;</p><p>  wtype='high';</p><p><b>  case(3)</b></p><p>  dw=min((Wp1-Ws1),(Ws2-Wp2));</p><p>  W

84、n1=[Wn1 Wn2];</p><p>  wtype='bandpass';</p><p><b>  end</b></p><p>  N = 2*ceil(11/dw)+1;</p><p>  window=blackman(N);</p><p><b>

85、;  case(5)</b></p><p>  if(Rs>=50)</p><p>  beta=0.1102*(Rs-8.7);</p><p>  elseif(Rs<=21)</p><p><b>  beta=0;</b></p><p>  else bet

86、a=0.5842*(Rs-21)^0.4+0.07886*(Rs-21); %The Kaiser Window figure ¦Â</p><p><b>  end</b></p><p>  switch handles.yhx4 % User selects Passband Type</p><p><

87、b>  case(1)</b></p><p>  dw=Ws1-Wp1;</p><p>  wtype='low';</p><p><b>  case(2)</b></p><p>  dw=Wp1-Ws1;</p><p>  wtype='hi

88、gh';</p><p><b>  case(3)</b></p><p>  dw=min((Wp1-Ws1),(Ws2-Wp2));</p><p>  Wn1=[Wn1 Wn2];</p><p>  wtype='bandpass';</p><p><b&

89、gt;  end</b></p><p>  N = ceil((Rs-7.95)/(2.286*dw));</p><p>  window=kaiser(N,beta);</p><p><b>  end</b></p><p>  handles.c=fir1(N-1,Wn1,wtype,window

90、);</p><p>  [h,f]=freqz(handles.c,1,128,handles.Fs);</p><p>  plot(handles.axes3,f,20*log10(abs(h))); %Amplitude-frequency response</p><p>  plot(handles.axes7,f,angle(h)); %Pha

91、se-frequencyresponsee</p><p><b>  end</b></p><p>  xlabel(handles.axes3,'Frequency (Hz)')</p><p>  title(handles.axes3,'Amplitude-frequency response')<

92、;/p><p>  axis(handles.axes3,'tight');</p><p>  xlabel(handles.axes7,'Frequency (Hz)')</p><p>  title(handles.axes7,'Phase-frequencyresponsee')</p><p

93、>  axis(handles.axes7,'tight');</p><p>  guidata(hObject,handles);</p><p>  function edit1_Callback(hObject, eventdata, handles)</p><p>  function edit1_CreateFcn(hObject

94、, eventdata, handles)</p><p>  if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))</p><p>  set(hObject,'BackgroundColor'

95、,'white');</p><p><b>  end</b></p><p>  function edit2_Callback(hObject, eventdata, handles)</p><p>  function edit2_CreateFcn(hObject, eventdata, handles)</p

96、><p>  if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))</p><p>  set(hObject,'BackgroundColor','white');</p>

97、;<p><b>  end</b></p><p>  function edit3_Callback(hObject, eventdata, handles)</p><p>  function edit3_CreateFcn(hObject, eventdata, handles)</p><p>  if ispc &a

98、mp;& isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))</p><p>  set(hObject,'BackgroundColor','white');</p><p><b>  end&

99、lt;/b></p><p>  function edit4_Callback(hObject, eventdata, handles)</p><p>  function edit4_CreateFcn(hObject, eventdata, handles)</p><p>  if ispc && isequal(get(hObjec

100、t,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))</p><p>  set(hObject,'BackgroundColor','white');</p><p><b>  end</b></p><p&

101、gt;  function edit5_CreateFcn(hObject, eventdata, handles)</p><p>  if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))</p><p>  

102、set(hObject,'BackgroundColor','white');</p><p><b>  end</b></p><p>  function edit6_Callback(hObject, eventdata, handles)</p><p>  function edit6_CreateF

103、cn(hObject, eventdata, handles)</p><p>  if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))</p><p>  set(hObject,'Background

104、Color','white');</p><p><b>  end</b></p><p>  function edit7_Callback(hObject, eventdata, handles)</p><p>  function edit7_CreateFcn(hObject, eventdata, hand

105、les)</p><p>  if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))</p><p>  set(hObject,'BackgroundColor','white')

106、;</p><p><b>  end</b></p><p>  function pushbutton1_Callback(hObject, eventdata, handles)</p><p>  button2 = questdlg('Do You Want To Record A New Sound?',...<

107、;/p><p>  'Record Or Load','Yes','No,Choose From Computer','Yes');</p><p>  switch button2</p><p>  case 'Yes',</p><p>  handles.ra

108、te =8000;</p><p>  handles.data= wavrecord(5*handles.rate,handles.rate,'double');</p><p>  case 'No,Choose From Computer',</p><p>  [FileName,PathName] = uigetfile(&

109、#39;*.wav','Select the wav file'); %To slect the wav file </p><p>  handles.string = [PathName FileName];</p><p>  [handles.data, handles.rate] = wavread([PathName FileName]);</p&

110、gt;<p>  set(handles.edit8,'String',PathName); %Display the path name at edit8</p><p><b>  end</b></p><p>  set(handles.edit1,'String',handles.rate); </p>

111、;<p>  guidata(hObject,handles);</p><p>  function pushbutton2_Callback(hObject, eventdata, handles)</p><p>  handles.L=length(handles.data);</p><p>  plot(handles.axes1,hand

112、les.data);</p><p>  axis(handles.axes1,'tight');</p><p>  title(handles.axes1,'Time domain representation of input signal')</p><p>  xlabel(handles.axes1,'time (

113、milliseconds)')</p><p>  temp=fft(handles.data); %Fast Fourier transformation</p><p>  temp=abs(temp);</p><p>  plot(handles.axes2,temp)</p><p>  axis(handles.axes2

114、,'tight');</p><p>  xlabel(handles.axes2,'Frequency (Hz)')</p><p>  xlim(handles.axes2,[0 handles.L/2])</p><p>  title(handles.axes2,'Frequency representation of

115、 input signal')</p><p>  guidata(hObject,handles);</p><p>  function pushbutton4_Callback(hObject, eventdata, handles)</p><p>  switch handles.yhx1</p><p><b>

116、  case(1)</b></p><p>  handles.y=filter(handles.b,handles.a,handles.data);%Through the IIR Filter </p><p>  Y=fft(handles.y);</p><p><b>  case(2)</b></p>&l

117、t;p>  handles.y=fftfilt(handles.c,handles.data);%Through the FIR Filter </p><p>  Y=fft(handles.y); </p><p><b>  end</b></p><p>  plot(handles.axes4,handles.y);

118、</p><p>  axis(handles.axes4,'tight');</p><p>  plot(handles.axes5,abs(Y));</p><p>  axis(handles.axes5,'tight');</p><p>  xlim(handles.axes5,[0 handles

119、.L/2]);</p><p>  title(handles.axes4,'Time domain representation of ouput signal')</p><p>  xlabel(handles.axes4,'time (milliseconds)')</p><p>  xlabel(handles.axes5

120、,'Frequency (Hz)')</p><p>  title(handles.axes5,'Frequency representation of ouput signal')</p><p>  guidata(hObject,handles);</p><p>  function pushbutton5_Callback

121、(hObject, eventdata, handles)</p><p>  sound(handles.y,handles.rate); %Replay sound</p><p>  guidata(hObject,handles);</p><p>  function pushbutton6_Callback(hObject, eventdata, ha

122、ndles)</p><p>  sound(handles.data, handles.rate); %Play sound</p><p>  function edit8_Callback(hObject, eventdata, handles)</p><p>  function edit8_CreateFcn(hObject, eventdata, h

123、andles)</p><p>  if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))</p><p>  set(hObject,'BackgroundColor','white

124、9;);</p><p><b>  end</b></p><p>  function pushbutton7_Callback(hObject, eventdata, handles)</p><p>  button = questdlg('Ready to quit?', ...</p><p>

125、;  'Exit Dialog','Yes','No','No');</p><p>  switch button</p><p>  case 'Yes',</p><p>  disp('Exiting Object');</p><p> 

126、 %Save variables to matlab.mat</p><p><b>  save</b></p><p>  delete(NEWS)</p><p>  case 'No',</p><p>  quit cancel;</p><p><b>  e

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論