




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、設(shè)計(jì)任務(wù)計(jì)算1個(gè)給定序列與輸入序列的卷積。功能:對(duì)給定的數(shù)據(jù)進(jìn)行卷積運(yùn)算,要求分段卷積由循環(huán)卷積實(shí)現(xiàn)。要求設(shè)計(jì)有數(shù)據(jù)導(dǎo)入界面,各種參數(shù)從軟件界面可以輸入,其中給定序列可以由界面輸入,對(duì)運(yùn)算前后的數(shù)據(jù)繪制曲線。 要求:1) 初步完成總體設(shè)計(jì),搭好框架,確定人機(jī)對(duì)話的界面,確定函數(shù)功能,控 制參數(shù)的輸入方法;2) 設(shè)計(jì)線性卷積的實(shí)現(xiàn)方案;3) 編寫兩序列作循環(huán)卷積的程序;4) 通過直接做線性卷積來檢驗(yàn)最后結(jié)果。設(shè)計(jì)步驟:1) 用結(jié)構(gòu)化設(shè)計(jì)方法。一個(gè)程序劃分成若干模塊,每一個(gè)模塊的函數(shù)功能要?jiǎng)澐趾?,總體設(shè)計(jì)應(yīng)畫出流程圖;2) 輸入輸出界面要友好;3) 源程序書寫要規(guī)范,加必要的注釋;4) 要提供通過
2、直接卷積進(jìn)行檢驗(yàn)的結(jié)果;5) 程序一定要要能運(yùn)行起來。一、原理 1、算法產(chǎn)生背景 DFT 是連續(xù)傅里葉變換在時(shí)域和頻域上都離散的形式,將時(shí)域信號(hào)的采樣變換為在離散時(shí)間傅里葉變換頻域的采樣。在形式上,變換兩端(時(shí)域和頻域上)的序列是有限長的。DFT 具備明確且合理的物理含義,適合應(yīng)用于數(shù)字系統(tǒng),同時(shí)可以方便地由計(jì)算機(jī)進(jìn)行運(yùn)算。 對(duì)于線性非移變離散系統(tǒng),可由線性卷積表示時(shí)域輸入輸出關(guān)系,即 y(n)=x(n)*h(n) = 通常采用循環(huán)卷積降低運(yùn)算量,但實(shí)際中往往無法滿足對(duì)信號(hào)處理的實(shí)時(shí)性要求。因此,產(chǎn)生了重疊相加法和重疊保留法兩種典型的算法,用以快速計(jì)算線性卷積,成為了DFT 的一個(gè)重要應(yīng)用。
3、2、算法基本思想 重疊相加法是將待過濾的信號(hào)分割成長為 N 的若干段,每一段都可以和有限時(shí)寬單位取樣回應(yīng)作卷積,再將過濾后的各段重疊相加。 在實(shí)際應(yīng)用中利用FFT來計(jì)算兩個(gè)序列的圓周卷積從而實(shí)現(xiàn)計(jì)算其線性卷積,但是常遇到的問題是參加卷積的兩個(gè)序列的長度相差較大,這樣長度小的序列就需要補(bǔ)很多的零點(diǎn),這樣就需要大的存儲(chǔ)量,運(yùn)算時(shí)間也會(huì)變長。所以常用重疊相加法來解決。如以下情況: h(n)長度為N,x(n)長度為無限長 x(n)取M點(diǎn),且與N盡量接近可采用如下方法來解決 x(n)與h(n)的卷積為重疊相加法的卷積示意圖重疊相加法的步驟如下(1)將h(n)補(bǔ)零延長到L =M+ N -1,并計(jì)算長為L的
4、FFT,得到 H(k)。(2)分別將xk(n)補(bǔ)零延長到L =M+ N -1,并計(jì)算長為L的FFT,得到 Xk(k)(3)計(jì)算,并求長為L的反變換,即(4)將yk(n)的重疊部分相加,最后得到結(jié)果為二、程序設(shè)計(jì)1、程序設(shè)計(jì)思路函數(shù)juanji(x1,x2,L)設(shè)計(jì)(1) x1(n)進(jìn)行N點(diǎn)快速傅里葉變換得X1k(2) x2(n)進(jìn)行N點(diǎn)快速傅里葉變換得X2k(3) 進(jìn)行頻域相乘Yk=X1k*X2k(4) 對(duì)Yk進(jìn)行反變換得到時(shí)域卷積結(jié)果y(n)函數(shù)chongdie(x,h,N)設(shè)計(jì)(1)首先取圓周卷積的周期L(即進(jìn)行L點(diǎn)的快速傅里葉變換)(2)計(jì)算每一分段的大小N(3)填充序列使得循環(huán)中對(duì)序列
5、的索引不會(huì)超出范圍(4)計(jì)算分段數(shù)K(5)對(duì)序列進(jìn)行分段調(diào)用juanji()函數(shù)計(jì)算圓周卷積(6)各段重疊相加(7)取出實(shí)際的輸出序列2、 程序流程圖開始對(duì)x1(n)進(jìn)行FFT運(yùn)算對(duì)x(2)進(jìn)行FFT運(yùn)算頻域相乘Yk=X1k*X2k對(duì)Yk進(jìn)行反變換得到時(shí)域結(jié)果y(n)結(jié)束開始取圓周卷積的周期L計(jì)算每一分段的大小N將序列按要求填充計(jì)算分段數(shù)K調(diào)用卷積函數(shù)將各段處理的結(jié)果重疊相加輸出最終結(jié)果結(jié)束重疊相加法卷積 三、分析與測(cè)試1、循環(huán)卷積設(shè)計(jì) 程序 M = length(h);if N <M %為N選擇合適的值保證運(yùn)算正確 N = M+1; endL = M+N-1; %循環(huán)卷積與線性卷積結(jié)果
6、相同時(shí)需要進(jìn)行運(yùn)算的最少點(diǎn)數(shù)Lx = length(x); T = ceil(Lx/N); %確定分段數(shù)Tt = zeros(1,M-1); %初始化序列t(n)x = x,zeros(1,(T+1)*N-Lx); %不足的分段補(bǔ)零 y = zeros(1,(T+1)*N); %生成輸出序列y(n),長度足夠長 for i=0:1:T xi=i*N+1; x_seg = x(xi:xi+N-1); %選擇低點(diǎn)數(shù)計(jì)算時(shí)的分段x(n) X1k = fft(x_seg,L); %x_seg做L點(diǎn)FFT X2k = fft(h,L); %h做L點(diǎn)FFT Yk = X1k.*X2k; %頻域相乘 y_s
7、eg = ifft(Yk); %FFT反變換得循環(huán)卷積結(jié)果 y_seg(1:M-1)=y_seg(1:M-1)+t(1:M-1);%完成重疊相加 t(1:M-1) = y_seg(N+1:L); %重新對(duì)t(n)賦值為保留的后M-1點(diǎn) y(xi:xi+N-1)=y_seg(1:N); %直接輸出前N個(gè)點(diǎn) endy=y(1:Lx+M-1); %取出最終的輸出序列 測(cè)試設(shè)N=4 h=1,2,3,4 X=1,2,3,4,5,6,7,8,9調(diào)用系統(tǒng)函數(shù)fftfilt(h,x,N)對(duì)比生成圖像設(shè)計(jì)函數(shù)圖形系統(tǒng)函數(shù)fftfilt(h,x,N) 分析 設(shè)計(jì)函數(shù)與系統(tǒng)函數(shù)前7個(gè)點(diǎn)一樣,系統(tǒng)函數(shù)沒有后4-1=3
8、個(gè)點(diǎn),4為h(n)長度。設(shè)計(jì)函數(shù)符合要求。2、 線性卷積設(shè)計(jì) 程序Lx=length(A)+length(B)-1; %線性卷積長度l1=length(A)-1;l2=length(B)-1;A=zeros(1,l2) A zeros(1,l2); %A序列前后補(bǔ)零B=fliplr(B); %反轉(zhuǎn)BB=B,zeros(1,l1+l2); %B序列后面補(bǔ)零 與A長度相等for i=1:Lx %計(jì)算z(i) z(i)=A(1)*B(1); for k=2:length(B) z(i)=z(i)+A(k)*B(k); end t=B(length(B); %保存B序列最后一個(gè)數(shù) for j=leng
9、th(B):-1:2 %B序列依次向后移位 B(j)=B(j-1); end B(1)=t;end 測(cè)試設(shè)h=1,3,5,7 X=9,8,7,6,5,4,3,2,1調(diào)用系統(tǒng)函數(shù)conv(h,x)對(duì)比生成圖像設(shè)計(jì)函數(shù)圖形系統(tǒng)函數(shù)conv(h,x) 分析 設(shè)計(jì)函數(shù)與調(diào)用系統(tǒng)函數(shù)結(jié)果完全相同,設(shè)計(jì)函數(shù)符合要求。4、 實(shí)驗(yàn)結(jié)果1、 實(shí)驗(yàn)源程序 見附錄2、 實(shí)驗(yàn)結(jié)果5、 總結(jié)作為電子信息工程系的學(xué)生,數(shù)字信號(hào)處理這門課程是其他很多課程的基礎(chǔ),所以學(xué)好學(xué)通數(shù)字信號(hào)處理這門課程對(duì)我們來說是非常重要的。而MATLAB這款軟件對(duì)數(shù)字信號(hào)處理的建模、編程、分析、實(shí)現(xiàn)有極大的幫助作用,所以我們應(yīng)該掌握使用MATLA
10、B編程來實(shí)現(xiàn)對(duì)數(shù)字信號(hào)的處理。此次我得到的課設(shè)題目是:通過重疊相加法計(jì)算卷積。拿到課設(shè)題目后,我仔細(xì)研究了與題目相關(guān)的原理,包括線性卷積、周期卷積、圓周卷積、重疊相加法、離散福利葉變換DFT、快速傅里葉變換FFT等原理知識(shí),弄清楚了它們之間的關(guān)系。通過這次課程設(shè)計(jì),我不僅順利完成課程設(shè)計(jì)的要求,而且在課程設(shè)計(jì)過程中通過對(duì)相關(guān)原理的回顧,對(duì)各相關(guān)原理之間的關(guān)系有了脫胎換骨般的認(rèn)識(shí),讓我意識(shí)到此前學(xué)到的知識(shí)是多么的淺薄。在和同組同學(xué)一起討論研究通基于重疊相加法的圓周卷積原理后,我開始了利用MATLAB來實(shí)現(xiàn)這個(gè)功能。在編寫程序的過程中,我查閱了很多有關(guān)MATLAB的編程知識(shí),通過整合所查閱到的編程
11、知識(shí),結(jié)合先前研究的基于重疊相加法的圓周卷積原理,我設(shè)計(jì)了具有此功能的MATLAB函數(shù)。在設(shè)計(jì)時(shí)我遇到了不少的問題,剛開始時(shí)我先設(shè)定分段長度N,然后由N來求卷積周期L。但是在程序運(yùn)行過程中我發(fā)現(xiàn)算法具有很大的局限性。通過仔細(xì)揣摩這其中的問題,原來是我忽略了FFT運(yùn)算的條件。所以我制定了第二個(gè)方案,先設(shè)定卷積的周期L,然后由L來求分段長度N,這樣程序的適用范圍就擴(kuò)大了。為了提高程序的適用性,我不斷的對(duì)程序進(jìn)行修改和測(cè)試,以求能夠達(dá)到更好的效果,這個(gè)過程讓我體會(huì)到了編程解決問題的樂趣。通過這次課程設(shè)計(jì),讓我加深了對(duì)書本知識(shí)的理解,并應(yīng)用課本的理論知識(shí),結(jié)合相關(guān)軟件,設(shè)計(jì)解決問題的算法。從而提高了由
12、知識(shí)轉(zhuǎn)換為技能的能力,提高了自己的實(shí)踐能力。通過與同學(xué)的互相溝通,不僅使各自的知識(shí)得到了擴(kuò)充,而且從中得到了很多的啟示,這次課程設(shè)計(jì)讓人受益匪淺。六、參考文獻(xiàn)【1】高西全、丁玉美.數(shù)字信號(hào)處理 第三版.西安電子科技大學(xué)出版社.2008.【2】羅建軍、楊琦.精講多練MATLAB.西安:西安交通大學(xué)出版社.2002.【3】劉泉、闕大順、郭志強(qiáng).數(shù)字信號(hào)處理.電子工業(yè)出版社.2009.【4】程衛(wèi)國.MATLAB53精要編程及高級(jí)應(yīng)用.北京:機(jī)械工業(yè)出版社.2000.【5】李正周.MATLAB數(shù)字信號(hào)處理與應(yīng)用.北京: 清華大學(xué)出版社.2008. 【6】周建興、豈興明等編. MATLAB從入門到精通.
13、人民郵電出版社.2008【7】徐金明、張孟喜、丁濤編. Matlab實(shí)用教程.清華大學(xué)出版社,北京交通大學(xué)出版社.2007.附錄:源程序function varargout = zc(varargin)%ZC M-file for zc.fig% ZC, by itself, creates a new ZC or raises the existing% singleton*.% H = ZC returns the handle to a new ZC or the handle to% the existing singleton*.% ZC('Property',
14、9;Value',.) creates a new ZC using the% given property value pairs. Unrecognized properties are passed via% varargin to zc_OpeningFcn. This calling syntax produces a% warning when there is an existing singleton*.% ZC('CALLBACK') and ZC('CALLBACK',hObject,.) call the% local functi
15、on named CALLBACK in ZC.M with the given input% arguments.% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one% instance to run (singleton)".% See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help zc% Last Modified by GUIDE v2.5 30-Ju
16、n-2010 22:11:29% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, . 'gui_Singleton', gui_Singleton, . 'gui_OpeningFcn', zc_OpeningFcn, . 'gui_OutputFcn', zc_OutputFcn, . 'gui_LayoutFcn', , . 'gui_Callback
17、39;, );if nargin && ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);end% End initialization code - DO NOT EDIT% - Executes just before zc is made visible.function zc_Ope
18、ningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% varargin unrecognized PropertyName/PropertyValue p
19、airs from the% command line (see VARARGIN)% Choose default command line output for zchandles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes zc wait for user response (see UIRESUME)% uiwait(handles.figure1);% - Outputs from this function are returned to the comman
20、d line.function varargout = zc_OutputFcn(hObject, eventdata, handles)% varargout cell array for returning output args (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Get default
21、command line output from handles structurevarargout1 = handles.output;function aa_Callback(hObject, eventdata, handles)% hObject handle to aa (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,&
22、#39;String') returns contents of aa as text% str2double(get(hObject,'String') returns contents of aa as a double% - Executes during object creation, after setting all properties.function aa_CreateFcn(hObject, eventdata, handles)% hObject handle to aa (see GCBO)% eventdata reserved - to b
23、e defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc set(hObject,'BackgroundColor','white');else set(hObject,'BackgroundColor&
24、#39;,get(0,'defaultUicontrolBackgroundColor');endfunction bb_Callback(hObject, eventdata, handles)% hObject handle to bb (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String
25、9;) returns contents of bb as text% str2double(get(hObject,'String') returns contents of bb as a double% - Executes during object creation, after setting all properties.function bb_CreateFcn(hObject, eventdata, handles)% hObject handle to bb (see GCBO)% eventdata reserved - to be defined in
26、a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc set(hObject,'BackgroundColor','white');else set(hObject,'BackgroundColor',get(0,
27、39;defaultUicontrolBackgroundColor');endfunction ll_Callback(hObject, eventdata, handles)% hObject handle to ll (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns c
28、ontents of ll as text% str2double(get(hObject,'String') returns contents of ll as a double% - Executes during object creation, after setting all properties.function ll_CreateFcn(hObject, eventdata, handles)% hObject handle to ll (see GCBO)% eventdata reserved - to be defined in a future vers
29、ion of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc set(hObject,'BackgroundColor','white');else set(hObject,'BackgroundColor',get(0,'defaultUic
30、ontrolBackgroundColor');end% - Executes on button press in tt.function tt_Callback(hObject, eventdata, handles)% hObject handle to tt (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)N=str2num(get(handles.ll,&
31、#39;string');a=str2num(get(handles.aa,'string');b=str2num(get(handles.bb,'string');h=a;x=b;M = length(h);if N <M %為N選擇合適的值保證運(yùn)算正確 N = M+1; endL = M+N-1; %循環(huán)卷積與線性卷積結(jié)果相同時(shí)需要進(jìn)行運(yùn)算的最少點(diǎn)數(shù)Lx = length(x); T = ceil(Lx/N); %確定分段數(shù)Tt = zeros(1,M-1); %初始化序列t(n)x = x,zeros(1, (T+1)*N-Lx); %不足的
32、分段補(bǔ)零 y = zeros(1, (T+1)*N); %生成輸出序列y(n),長度足夠長 for i=0:1:T xi=i*N+1; x_seg = x(xi:xi+N-1); %選擇低點(diǎn)數(shù)計(jì)算時(shí)的分段x(n) X1k = fft(x_seg,L); %x_seg做L點(diǎn)FFT X2k = fft(h,L); %h做L點(diǎn)FFT Yk = X1k.*X2k; %頻域相乘 y_seg = ifft(Yk); %FFT反變換得循環(huán)卷積結(jié)果 y_seg(1:M-1) = y_seg(1:M-1)+t(1:M-1);%完成重疊相加 t(1:M-1) = y_seg(N+1:L); %重新對(duì)t(n)賦值為
33、保留的后M-1點(diǎn) y(xi:xi+N-1) = y_seg(1:N); %直接輸出前N個(gè)點(diǎn) endy=y(1:Lx+M-1); %取出最終的輸出序列 %-線性卷積程序-A=a;B=b;Lx=length(A)+length(B)-1; %線性卷積長度l1=length(A)-1;l2=length(B)-1;A=zeros(1,l2) A zeros(1,l2); %A序列前后補(bǔ)零B=fliplr(B); %反轉(zhuǎn)BB=B,zeros(1,l1+l2); %B序列后面補(bǔ)零 與A長度相等for i=1:Lx %計(jì)算z(i) z(i)=A(1)*B(1); for k=2:length(B) z(i
34、)=z(i)+A(k)*B(k); end t=B(length(B); %保存B序列最后一個(gè)數(shù) for j=length(B):-1:2 %B序列依次向后移位 B(j)=B(j-1); end B(1)=t;end xx=conv(a,b);yy=fftfilt(a,b,N);axes(handles.axes1)plot(a)axes(handles.axes2)plot(b)axes(handles.axes3)plot(y)axes(handles.axes4)plot(z)axes(handles.axes5)plot(yy)axes(handles.axes6)plot(xx)% - Executes on button press in tt2.function tt2_Callback(hO
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 留置胃管護(hù)理質(zhì)控2025
- 2025屆高考物理大一輪復(fù)習(xí)課件 第三章 第13課時(shí) 動(dòng)力學(xué)中的連接體和臨界、極值問題
- DeepSeek大模型賦能企業(yè)數(shù)字化轉(zhuǎn)型建設(shè)方案
- AI大模型賦能數(shù)字農(nóng)業(yè)農(nóng)村信息化建設(shè)方案
- 南湖社區(qū)衛(wèi)生服務(wù)中心消除艾梅乙母嬰傳播反歧視工作培訓(xùn)試題及答案
- 電針治療腹腔鏡胃腸道腫瘤術(shù)后胃腸功能障礙的臨床觀察
- 憲法黨章試題及答案
- 物理因子試題及答案
- 明框玻璃壓板間距規(guī)范技術(shù)解析
- 提高工程設(shè)計(jì)企業(yè)的創(chuàng)新能力與技術(shù)研發(fā)
- 2025屆河南省洛陽市等兩地高三下學(xué)期三模歷史試題(含答案)
- 智能口罩設(shè)計(jì)優(yōu)化-洞察闡釋
- 2024年江蘇省東臺(tái)市事業(yè)單位公開招聘教師崗考試題帶答案分析
- 2025年4月八大員-勞務(wù)員練習(xí)題庫與參考答案解析
- 2025年軍隊(duì)文職統(tǒng)一考試《專業(yè)科目》會(huì)計(jì)學(xué)試卷真題答案解析
- 2025-2030肺癌手術(shù)行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 農(nóng)村飲水安全工程可行性研究報(bào)告
- 人工智能與法律職業(yè)發(fā)展的潛在挑戰(zhàn)-洞察闡釋
- 2024-2025統(tǒng)編版一年級(jí)下冊(cè)道德與法治期末考試卷及參考答案
- 2025-2030年中國邊緣數(shù)據(jù)中心行業(yè)市場(chǎng)現(xiàn)狀調(diào)查及發(fā)展趨向研判報(bào)告
- 井岡山硒橙生產(chǎn)技術(shù)規(guī)程
評(píng)論
0/150
提交評(píng)論