版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
word文檔可自由編輯word文檔可自由編輯word文檔可自由編輯基于MATLAB的簡(jiǎn)易聲音信號(hào)頻譜分析儀設(shè)計(jì)摘要通過(guò)MATLAB強(qiáng)大的信號(hào)處理功能,先設(shè)計(jì)了幾個(gè)理想濾波器,通過(guò)對(duì)理想濾波器的濾波特性分析對(duì)比,可以更直觀得認(rèn)識(shí)濾波器的功能。利用濾波器原理,結(jié)合數(shù)字均衡器的設(shè)計(jì)要求,對(duì)各種數(shù)字音頻信號(hào)進(jìn)行濾波處理,設(shè)計(jì)出一種可調(diào)節(jié)參數(shù)的數(shù)字濾波器,即一種均衡器。本文的數(shù)字均衡器以MATLAB為設(shè)計(jì)平臺(tái),有.wav文件的獲取、濾波、保存和播放控制功能。在對(duì)聲音文件進(jìn)行頻率分析的基礎(chǔ)上,用10段均衡器可對(duì)聲音信號(hào)進(jìn)行調(diào)節(jié)后保存播放。關(guān)鍵字:MATLAB,濾波器,均衡器,傅里葉反變換概述隨著數(shù)字化技術(shù)的快速、深入發(fā)展,人們對(duì)數(shù)字化電子產(chǎn)品所產(chǎn)生的圖像、圖形以及聲音等質(zhì)量的要求越來(lái)越高。在實(shí)時(shí)數(shù)字處理過(guò)程中,往往需要對(duì)目標(biāo)信號(hào)進(jìn)行濾波處理,以滿足用戶對(duì)信號(hào)的要求。MATLAB是一個(gè)數(shù)據(jù)分析和處理功能十分強(qiáng)大的工程實(shí)用軟件,它的濾波器設(shè)計(jì)工具箱為實(shí)現(xiàn)聲音信號(hào)的數(shù)字濾波提供了十分方便的函數(shù)和命令。本文將介紹基于MATLAB設(shè)計(jì)出的一種實(shí)用的數(shù)字濾波器,并對(duì)其功能進(jìn)行擴(kuò)展,設(shè)計(jì)出一種均衡器。設(shè)計(jì)原理濾波器的種類很多,按所通過(guò)信號(hào)的頻段分為低通、高通、帶通和帶阻濾波器四種。低通濾波器:它允許信號(hào)中的低頻或直流分量通過(guò),抑制高頻分量或干擾和噪聲。高通濾波器:它允許信號(hào)中的高頻分量通過(guò),抑制低頻或直流分量。帶通濾波器:它允許一定頻段的信號(hào)通過(guò),抑制低于或高于該頻段的信號(hào)、干擾和噪聲。帶阻濾波器:它抑制一定頻段內(nèi)的信號(hào),允許該頻段以外的信號(hào)通過(guò)。上述每種濾波器又可以分為模擬濾波器和數(shù)字濾波器。如果濾波器的輸入輸出都是數(shù)字信號(hào),則這樣的濾波器稱之為數(shù)字濾波器。根據(jù)數(shù)字濾波器沖激響應(yīng)的時(shí)域特性,可將數(shù)字濾波器分為兩種,即無(wú)限長(zhǎng)沖激響應(yīng)(IIR)濾波器和有限長(zhǎng)沖激響應(yīng)(FIR)濾波器。2.1濾波器設(shè)計(jì)原理濾波器就是對(duì)系統(tǒng)的輸入信號(hào)進(jìn)行濾波。輸入x(n)和輸出y(n)之間的關(guān)系是脈沖響應(yīng)h(n),即y(n)x(n)*h(n)(2-1)如果濾波器的輸入輸出都為離散信號(hào),那么該濾波器的脈沖響應(yīng)也應(yīng)該是離散信號(hào),這樣濾波器就成為了數(shù)字濾波器。上面的系統(tǒng)為時(shí)域離散系統(tǒng)時(shí),其頻域特性為Y(ej)X(ej)H(ej)(2-2)其中Y(ej)、X(ej)分別是數(shù)字濾波器的輸出序列和輸入序列的頻域特性,H(ej)是數(shù)字濾波器的頻域響應(yīng)??梢钥闯?,輸入序列的頻譜X(ej)經(jīng)過(guò)濾波后變成了X(ej)H(ej);因此按照輸入信號(hào)頻譜的特點(diǎn)和處理信號(hào)的目的適當(dāng)選擇H(ej),使得濾波后的X(ej)H(ej)滿足設(shè)計(jì)性能要求。在MATLAB中主要有Filter函數(shù)、Filtfilt函數(shù)等濾波函數(shù)。Filter函數(shù)濾波器的標(biāo)準(zhǔn)差分方程為a(1)y(n)b(1)x(n)b(2)x(n1)...b(n1)x(nn)b ba(2)y(n1)...a(n1)y(nn)(2-3) a b如果a(1)不為1,那么濾波器的系數(shù)將用a(1)進(jìn)行歸一化處理,即各系數(shù)同除以a(1)。2.2均衡器設(shè)計(jì)原理10段濾波器能夠?qū)σ韵聨讉€(gè)頻率段進(jìn)行濾波,各段的音感特征如下所示:30~60Hz(沉悶);60~100Hz(沉重);100~200Hz(豐滿);200~500Hz(力度);500~1KHz(明朗);1K~2KHz(透亮);2K~4Kz(尖銳);4K~8Kz(清脆);8K~16Kz(纖細(xì))。通過(guò)對(duì)各頻段的濾波特性設(shè)置即可調(diào)出不同的音效。打開(kāi)音頻文件后,先對(duì)原始聲音信號(hào)進(jìn)行傅里葉變換處理,然后從滾動(dòng)條上獲得各頻段的濾波特性值,通過(guò)換算得到增益值,并構(gòu)造濾波器頻域特性響應(yīng),即可得到該頻率范圍的濾波器。使用該構(gòu)造的濾波器對(duì)輸入的原始聲音信號(hào)進(jìn)行頻域?yàn)V波,并通過(guò)傅里葉反變換將濾波后的頻域信號(hào)轉(zhuǎn)化成的時(shí)域波形信號(hào)。然后,再播放該濾波后的聲音信號(hào),即可發(fā)現(xiàn)聲音的音質(zhì)效果發(fā)生了改變。這就是均衡器的基本工作原理。word文檔可自由編輯word文檔可自由編輯word文檔可自由編輯MATLAB程序設(shè)計(jì)模塊設(shè)計(jì)該MATLAB程序的模塊設(shè)計(jì)如下圖所示。數(shù)字濾波器與均衡器輸入模塊數(shù)字濾波器與均衡器輸入模塊圖形顯示模塊濾波模塊wav文件導(dǎo)入理想濾波器均衡器低通高通帶阻帶通波形分析顯示頻譜分析顯示圖1模塊設(shè)計(jì)圖圖形界面設(shè)計(jì)首先打開(kāi)MATLAB,在命令窗口中輸入guide命令進(jìn)入GUI圖形設(shè)計(jì)界面。再新建一個(gè)空白的圖形界面文件,添加如下的控件并設(shè)計(jì)它們的布局。添加5個(gè)axes控件,用于顯示時(shí)域波形圖和頻域頻譜圖;添加4個(gè)statictext控件,用于窗口及其他控件的說(shuō)明使用;添加6個(gè)panel控件,將一組相關(guān)的控件框在一起;添加1個(gè)edit控件,用于輸入頻率參數(shù)值;添加2個(gè)pop-upmenu控件,用于選擇信號(hào)發(fā)生器產(chǎn)生的信號(hào)類型和均衡器參數(shù)配置;添加4個(gè)radiobutton,用于選擇濾波器類型;(7)添加11個(gè)slider控件,用于設(shè)置均衡器參數(shù)和音量大??;(8)添加11個(gè)pushbutton控件,其中6個(gè)用于控制音頻文件播放,2個(gè)用于打開(kāi)和保存文件,其余3個(gè)用于控制均衡器設(shè)置。雙擊各個(gè)控件,打開(kāi)其屬性編輯窗,即可修改其名稱、顏色、大小、初始值及位置等屬性。最終編輯好的界面如下圖所示:3.3MATLAB編程當(dāng)界面控件及布局創(chuàng)建完成以后,點(diǎn)擊運(yùn)行即可自動(dòng)生成包含各控件回調(diào)函數(shù)在內(nèi)的m文件。MATLAB對(duì)于輸入框、按鈕及滑動(dòng)條等控件的響應(yīng)都是通過(guò)自動(dòng)調(diào)用相應(yīng)的回調(diào)函數(shù)來(lái)實(shí)現(xiàn)的?;卣{(diào)函數(shù)即在一定的操作下自動(dòng)執(zhí)行的指令代碼。本次數(shù)字濾波器及均衡器的設(shè)計(jì)主要功能有數(shù)字信號(hào)發(fā)生器,信號(hào)頻譜分析顯示,理想濾波器濾波,音頻文件的打開(kāi)及保存,音頻播放控制及均衡器效果設(shè)置等。下面僅介紹實(shí)現(xiàn)幾個(gè)主要功能的M代碼程序。(1)理想濾波器濾波。實(shí)現(xiàn)的代碼及說(shuō)明如下:N=handles.N;if(get(handles.RB_LowPass,'Value')==1)fL=5000;%設(shè)置低通截止頻率%設(shè)置理想低通濾波器的頻率特性Hw=[ones(1,fix(N*fL/fs)),zeros(1,N-2*fix(N*fL/fs)),ones(1,fix(N*fL/fs))];elseif(get(handles.RB_HighPass,'Value')==1)fH=5000;%設(shè)置高通截止頻率%設(shè)置理想高通濾波器的頻率特性Hw=[zeros(1,fix(N*fH/fs)),ones(1,N-2*fix(N*fH/fs)),zeros(1,fix(N*fH/fs))];elseif(get(handles.RB_BandDamp,'Value')==1)f0=2500;f1=10000;Hw=[ones(1,fix(N*f0/fs)),zeros(1,fix(N*(f1-f0)/fs)),ones(1,N-2*fix(N*f1/fs)),zeros(1,fix(N*(f1-f0)/fs)),ones(1,fix(N*f0/fs))];elsef0=2500;f1=10000;Hw=[zeros(1,fix(N*f0/fs)),ones(1,fix(N*(f1-f0)/fs)),zeros(1,N-2*fix(N*f1/fs)),ones(1,fix(N*(f1-f0)/fs)),zeros(1,fix(N*f0/fs))];endfPyy=Pyy(1:handles.N/2).*Hw(1:handles.N/2);plot(handles.axes4,f,fPyy,'c');xlabel(handles.axes4,'濾波后信號(hào)頻譜Freqency(Hz)','fontweight','bold');ylabel(handles.axes4,'Amplitude','fontweight','bold');set(handles.axes4,'Color',[000],'XColor',[00.50],'YColor',[00.50]);grid(handles.axes4);word文檔可自由編輯word文檔可自由編輯word文檔可自由編輯上面代碼為理想濾波器頻域?yàn)V波的部分代碼,前一部分的if…;elseif…;elseif…;else…;end語(yǔ)句用于判斷選擇的理想濾波器類型,并用zeros和ones函數(shù)生成對(duì)應(yīng)的理想濾波器頻率特性離散值。后一語(yǔ)句將原始信號(hào)經(jīng)快速傅里葉變換得到的頻域特性與濾波器頻域特性相乘,即得到濾波后的信號(hào)頻域特性。然后,將得到的濾波后的信號(hào)頻譜圖輸出到axes4坐標(biāo)軸上。(2)音頻信號(hào)的打開(kāi)和保存。實(shí)現(xiàn)的代碼如下:I.打開(kāi)音頻文件functionPB_open_Callback(hObject,eventdata,handles)[filename]=uigetfile'*.wav'(,'選擇聲音文件');if(size(filename,2)>1)%判斷是否已打開(kāi)了聲音文件[s,fs]=wavread(filename);set(handles.musicname,'string',filename);handles.s=s(:,1);handles.fs=fs;handles.sign=0;guidata(hObject,handles);end上面代碼為打開(kāi)音頻文件按鈕的回調(diào)函數(shù)。首先利用uigetfile函數(shù)打開(kāi)檢索文件對(duì)話框,打開(kāi)一個(gè)wav音頻文件,然后根據(jù)返回的文件名長(zhǎng)度判斷是否打開(kāi)成功,若成功,則將獲取到的文件名顯示到文本框控件上,并用wavread函數(shù)讀取該文件,獲取該音頻信號(hào)的波形數(shù)據(jù)和采樣率。最后將獲取到的波形數(shù)據(jù)和采樣率保存到handles數(shù)據(jù)中,方便后面的信號(hào)處理和播放。II.保存音頻文件functionPB_save_Callback(hObject,eventdata,handles)if(size(get(handles.musicname,'string'),2)==12&get(handles.musicname,'string')=='請(qǐng)打開(kāi)一個(gè)音頻文件...')return;end[filename]=uiputfile'*.wav'(,'將音頻文件另存為');if(filename==0)return;endwavwrite(handles.s,handles.fs,filename);上面代碼為保存音頻文件按鈕的回調(diào)函數(shù)。首先判斷是否已打開(kāi)了音頻文件,若沒(méi)有打開(kāi),則直接返回。然后,用uiputfile函數(shù)打開(kāi)用于保存文件的標(biāo)準(zhǔn)對(duì)話框,輸入保存后的wav文件名,然后用wavwrite函數(shù)將當(dāng)前播放的音頻文件數(shù)據(jù)寫(xiě)入到該wav音頻文件中。(3)音頻播放控制。實(shí)現(xiàn)的代碼如下:生成聲音文件對(duì)象s=handles.s;fs=handles.fs;handles.p=audioplayer(s,fs);上面代碼是用audioplayer函數(shù),由聲音波形信號(hào)s和采樣率fs創(chuàng)建一個(gè)聲音播放對(duì)象。聲音播放及控制(暫停、繼續(xù)、停止、快播和慢播)聲音播放及控制的代碼語(yǔ)句如下所示:play(handles.p);%播放聲音對(duì)象pause(handles.p);%暫停播放resume(handles.p);%繼續(xù)播放stop(handles.p);%停止播放快播:首先獲取聲音對(duì)象的采樣率,然后將采樣率放大到1.5倍,代碼如下:temp=get(handles.p,'SampleRate');set(handles.p,'SampleRate',1.5*temp);慢播:首先獲取聲音對(duì)象的采樣率,然后將采樣率縮小到原來(lái)的0.7倍,代碼如下:temp=get(handles.p,'SampleRate');set(handles.p,'SampleRate',0.7*temp);III.音量控制vol=get(handles.slider_vol,'value');s=vol*s;handles.p=audioplayer(s,fs);guidata(hObject,handles);上面代碼為聲音播放的回調(diào)函數(shù)中關(guān)于音量控制部分的程序。首先獲取音量控制滑動(dòng)條的參數(shù)值,然后將它與聲音信號(hào)相乘得到新的聲音信號(hào),并由該聲音信號(hào)生成聲音播放對(duì)象。最后將該聲音播放對(duì)象保存到handles數(shù)據(jù)中,方便后面的聲音播放控制。(4)均衡器參數(shù)設(shè)置。實(shí)現(xiàn)的代碼如下:j=get(handles.PM_MusicType,'Value');switchjcase1case2set(handles.slider31,'value',3);set(handles.slider62,'value',1);set(handles.slider125,'value',0);set(handles.slider250,'value',-2);set(handles.slider500,'value',-4);set(handles.slider1k,'value',-4);set(handles.slider2k,'value',-2);set(handles.slider4k,'value',0);set(handles.slider6k,'value',1);set(handles.slider16k,'value',2);case3…case7…enda31=10.^(round(get(handles.slider31,'value'))/20);a62=10.^(round(get(handles.slider62,'value'))/20);a125=10.^(round(get(handles.slider125,'value'))/20);a250=10.^(round(get(handles.slider250,'value'))/20);a500=10.^(round(get(handles.slider500,'value'))/20);a1k=10.^(round(get(handles.slider1k,'value'))/20);a2k=10.^(round(get(handles.slider2k,'value'))/20);a4k=10.^(round(get(handles.slider4k,'value'))/20);a6k=10.^(round(get(handles.slider6k,'value'))/20);a16k=10.^(round(get(handles.slider16k,'value'))/20);N=size(s,1);k=N/fs;Pf=fft(s);Hw0=[a31*ones(1,fix(k*31)),a62*ones(1,fix(k*31)),a125*ones(1,fix(k*63)),a250*ones(1,fix(k*125)),a500*ones(1,fix(k*250)),...a1k*ones(1,fix(k*500)),a2k*ones(1,fix(k*1000)),a4k*ones(1,fix(k*2000)),a6k*ones(1,fix(k*2000))];Hw1=a16k*ones(1,length(Pf)-2*size(Hw0,2));Hw=[Hw0Hw1fliplr(Hw0)];Yw=Pf(:,1).*Hw';s=ifft(Yw);handles.p=audioplayer(s,fs);上面代碼前一部分是進(jìn)行均衡器參數(shù)設(shè)置(均衡器的參數(shù)設(shè)置范圍為-12dB至+12dB),接著計(jì)算出對(duì)應(yīng)頻率點(diǎn)的增益,由頻段的增益值構(gòu)造出均衡器的頻率特性。然后通過(guò)頻域?yàn)V波和傅里葉反變換計(jì)算出濾波后的聲音信號(hào),并由該聲音信號(hào)構(gòu)造一個(gè)聲音播放對(duì)象。4波形顯示理想低通濾波結(jié)果word文檔可自由編輯word文檔可自由編輯word文檔可自由編輯理想高通濾波結(jié)果理想帶通濾波結(jié)果理想帶阻濾波結(jié)果5存在的問(wèn)題本次基于MATLAB的數(shù)字濾波器和均衡器設(shè)計(jì)比之前的基于MATLAB的信號(hào)發(fā)生器和頻譜分析儀設(shè)計(jì)要難很多。但是前兩次的信設(shè)計(jì)技巧和方法是本次數(shù)字濾波器和均衡器設(shè)計(jì)的基礎(chǔ)。在本次數(shù)字濾波器和均衡器的設(shè)計(jì)過(guò)程中遇到了很多問(wèn)題,經(jīng)過(guò)查閱資料,有些問(wèn)題得到了完美的解決,也有些問(wèn)題解決的不是很好。下面將設(shè)計(jì)過(guò)程中遇到的問(wèn)題總結(jié)如下:對(duì)進(jìn)行濾波器設(shè)計(jì)時(shí),發(fā)現(xiàn)在構(gòu)造理想濾波器頻率特性響應(yīng)時(shí),要注意使濾波器頻域特性向量與信號(hào)的頻域特性向量長(zhǎng)度保持一致,且濾波器的頻域特性向量應(yīng)設(shè)計(jì)成對(duì)稱形式,不然無(wú)法進(jìn)行信號(hào)的頻域?yàn)V波和傅里葉反變換。設(shè)計(jì)音頻播放程序時(shí),發(fā)現(xiàn)MATLAB的文件讀取功能有限,打開(kāi)30多兆的wav音頻文件時(shí),會(huì)提示數(shù)據(jù)內(nèi)存不夠用。另外,在進(jìn)行大數(shù)據(jù)量的矩陣計(jì)算時(shí),速度比較慢。個(gè)人感覺(jué)MATLAB的多線程能力比較差,本人有考慮使用timer定時(shí)器來(lái)實(shí)現(xiàn)一些功能,比如實(shí)現(xiàn)音量的實(shí)時(shí)改變,均衡器效果的實(shí)時(shí)改變,播放進(jìn)度控制等,但都沒(méi)有成功。另外,發(fā)現(xiàn)這方面的資料很難找,所以只能放棄。在MATLAB中進(jìn)行音頻文件保存的問(wèn)題。MATLAB中用于打開(kāi)保存文件對(duì)話框的函數(shù)是uiputfile。但該函數(shù)只是返回一個(gè)保存的文件名,實(shí)際上并沒(méi)有真正創(chuàng)建該文件。使word文檔可自由編輯word文檔可自由編輯word文檔可自由編輯用時(shí),應(yīng)在后面用wavwrite函數(shù)將要保存的數(shù)據(jù)寫(xiě)入到該文件名中。6結(jié)束語(yǔ)本文通過(guò)對(duì)數(shù)字理想濾波器的頻域特性構(gòu)造,將信號(hào)發(fā)生
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年中國(guó)人民銀行清算總中心直屬企業(yè)銀清企業(yè)服務(wù)(北京)有限公司公開(kāi)招聘?jìng)淇碱}庫(kù)及參考答案詳解一套
- 2026年宜昌點(diǎn)軍區(qū)招聘城管執(zhí)法協(xié)管員5人備考題庫(kù)參考答案詳解
- 2026年中國(guó)科學(xué)院上海硅酸鹽研究所發(fā)展規(guī)劃處副處長(zhǎng)招聘?jìng)淇碱}庫(kù)參考答案詳解
- 2026年固鎮(zhèn)縣司法局選聘專職人民調(diào)解員16人備考題庫(kù)完整參考答案詳解
- 2026年中國(guó)科學(xué)院干旱區(qū)生態(tài)安全與可持續(xù)發(fā)展全國(guó)重點(diǎn)實(shí)驗(yàn)室專職秘書(shū)招聘?jìng)淇碱}庫(kù)及答案詳解參考
- 2026年嘉魚(yú)縣公安局公開(kāi)招聘警務(wù)輔助人員備考題庫(kù)及完整答案詳解1套
- 2026年中國(guó)社會(huì)科學(xué)院亞太與全球戰(zhàn)略研究院公開(kāi)招聘管理人員備考題庫(kù)及參考答案詳解
- 江西省高速集團(tuán)招聘筆試題庫(kù)2026
- 上海銷售分公司招聘筆試題庫(kù)2026
- 醫(yī)生行為與醫(yī)患關(guān)系
- 甘肅省酒泉市普通高中2025~2026學(xué)年度第一學(xué)期期末考試物理(含答案)
- 政治●天津卷丨2024年天津市普通高中學(xué)業(yè)水平選擇性考試政治試卷及答案
- GB 30254-2024高壓三相籠型異步電動(dòng)機(jī)能效限定值及能效等級(jí)
- 鹽酸、硫酸產(chǎn)品包裝說(shuō)明和使用說(shuō)明書(shū)
- GB/T 43731-2024生物樣本庫(kù)中生物樣本處理方法的確認(rèn)和驗(yàn)證通用要求
- 2024年部門(mén)業(yè)務(wù)主管自查自糾問(wèn)題總結(jié)及整改措施
- 汽車線束DFMEA設(shè)計(jì)失效模式和影響分析
- 烏魯木齊地區(qū)2024年高三年級(jí)第一次質(zhì)量監(jiān)測(cè)(一模)英語(yǔ)試卷(含答案)
- plc電梯設(shè)計(jì)的參考文獻(xiàn)
- 中偉西部基地液氨制氨水項(xiàng)目環(huán)評(píng)報(bào)告
- 地下室消防安全制度
評(píng)論
0/150
提交評(píng)論