




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、目 錄1前言12FFT算法的基本原理22.1系統總體流程圖22.2 FFT運算規律及編程思想2對圖片的選擇22.2.2 FFT算法的基本原理32.2.3 FFT算法的運算規律及編程思想43 軟件簡介53.1 Matlab簡介53.1.1 Matlab軟件概況53.1.2 Matlab的特點53.2 GUI簡介6界面設計63.3對比結果與分析84心得體會10參考文獻11附錄 Matlab源程序12附錄 GUI源程序161前言隨著信息時代,數字時代的到來,數字信號處理已經成為一門極其重要的學科和技術領域。以DSP為核心芯片的處理系統日益變成了數字信號處理系統的主流。它廣泛用于電子信息、通信、圖像處
2、理、語音處理、生物醫學、自動控制、地質探測等領域,受到工程設計和使用人員的青睞。MATLAB,它是美國Math Works公司推出的一種面向工程和科學計算的交互式計算軟件。它以矩陣運算為基礎,把計算、可視化、程序設計融合在一個簡單易用的交互式工作環境中,是一款數據分析和處理功能都非常強大的工程適用軟件。通過本次課設我們學會了分析和處理音頻信號,首先要對圖片信息進行采集,MATLAB的數據采集工具箱提供了一整套命令和函數,通過調用這些函數和命令,可直接控制圖像進行數據采集。Window自帶的程序也可驅動采集圖片信息,并能保存該文件,供MATLAB相關函數直接讀取寫入。MATLAB語言是一種數據分
3、析和處理功能十分強大的計算機應用軟件,它可以將圖像文件變換位離散的數據文件,然后利用其強大的矩陣運算能力處理數據,如數據濾波、傅立葉變換、時域和頻域分析、聲音回放以及各種圖的呈現等,它的信號處理與分析工具箱位語音信號分析提供了十分豐富的功能函數,利用這些功能函數可以快捷而又方便的完成圖像信號的處理和分析以及信號的可視化,是人機交互更加便捷。信號處理是MATLAB重要應用的領域之一。對于有限長序列x(n),若要求其N點的傅里葉變換DFT需要經過次復數乘法運算和N*(N-1)次復數加法運算。隨著N的增加,運算量將急劇增加,而在實際問題中,N往往是較大的,如當N=1024時,完成復數乘法和復數加法的
4、次數分別為百萬以上,無論是用通用計算機還是用DSP芯片,都需要消耗大量的時間和機器內存,不能滿足實時的要求。因此,DFT的這種運算只能進行理論上的計算,不適合對實時處理要求高的場合。因此,研究作為DSP的快速算法的FFT是相當必要的,快速傅里葉變換FFT是為提高DFT運算速度而采用的一種算法,快速算法的種類很多,而且目前仍在改進和提高,它是根據離散傅里葉變換的奇、偶、虛、實等特性,對離散傅立葉變換的算法進行改進獲得的。基于本學期所學的DIT-FFT的運算規律和編程思想以及Matlab的學習和使用,本課設要求在Matlab環境下編寫基2 DIT-FFT算法實現對離散信號的快速傅里葉變換,再與Ma
5、tlab軟件自帶的FFT函數實現對離散信號的傅里葉變換進行比較,如果得到的頻譜相同,那么我們編寫的程序就是正確的。用GUI界面完成人機交互方便使用的。本課程設計主要是對數字信號的分析。2FFT算法的基本原理2.1系統總體流程圖本設計要求選擇一個圖片,并對該圖像進行FFT變換。在Matlab環境下編寫基2 DIT-FFT算法;利用自己編寫的算法對選取的圖片進行分析,并與Matlab數字信號處理工具箱中的fft函數進行對比研究,驗證自編算法的正確性。所以得到系統總體流程圖如下圖所示。圖片選擇編寫FFT程序,得到所需的圖片對圖片的路徑選擇對圖片進行灰度變換實現選擇圖片的倒序一級中不同蝶形運算一級中相
6、同蝶形運算與MATLAB自帶的比較圖2-1 系統總體流程圖2.2 FFT運算規律及編程思想2.2.1對圖片的選擇保存一張圖片,格式為bmp,jpg或者是gif中的任何一種。并將該圖片文件保存在電腦的某個盤中。filename, pathname=uigetfile('*.jpg;*.tif;*.bmp;*.gif' ,'File Selector');image=imread(strcat(pathname,filename);這些代碼實現了對圖片的路徑進行的選擇,只要找到保存圖片的位置即可打開圖片。if ndims(image)=3 image=rgb2gra
7、y(image);end這些代碼實現了對圖片進行灰度變換,可以將原來是彩色的圖片變換成黑白色,目的是為了取點時方便簡單,而且速度更快,節省時間 。2.2.2 FFT算法的基本原理快速傅里葉變換FFT是為提高DFT運算速度而采用的一種算法。對一個有限長度序列x(n)的N點的DFT為:所以,要求N點的DFT,需要N2次的復數乘法運算,N*(N-1)次復數乘法運算算。隨著N的增加,運算量將急劇增加,而在實際問題中,N往往是較大的,因此無論是用通用計算機還是用DSP芯片,都需要消耗大量的時間,不能滿足實時的要求,,不適合于對實時處理要求高的場合。為了能實時處理DFT,要想減少DFT的運算量可以有兩個途
8、徑:第一是降N,N的值減小了,運算量就減少了;第二是利用旋轉因子的周期性,對稱性和可約性。利用這兩個途徑實現DFT的快速傅里葉變換FFT,FFT算法基本上可分為按時間抽取的FFT算法(DIT-FFT)和按頻率抽取的FFT算法(DIF-FFT)。旋轉因子的性質:(1)周期性(2)共軛對稱性(3)可約性本次課設要求用用基2的按時間抽取的FFT算法(DIT-FFT)實現FFT功能,設序列x(n)的長度為N,且N滿足N=2M,M為正整數。若N不能滿足上述關系,可以將序列x(n)補零實現。按時間抽取基2-FFT算法的基本思路是將N點序列按時間下標的奇偶分為兩個N/2點序列,計算這兩個N/2點序列的N/2
9、點DFT;每一個N/2點序列按照同樣的劃分原則,可以劃分為兩個N/4點序列,最后,將原序列劃分為多個2點序列,將計算量大大降低。按時間下標的奇偶將N點x(n)分別抽取組成兩個N/2點序列,分別記為x1(n)和x2(n),將x(n)的DFT轉化為x1(n)和x2(n)的DFT的計算。利用旋轉因子的可約性,即:用蝶形運算圖可表示為:圖2-2 蝶形運算圖以此類推,還可以把x1(n)和x2(n)按n值得奇偶分為兩個序列,這樣就達到了降N得目的,從而減少了運算量。FFT對DFT的數學運算量改進:直接采用DFT進行計算,運算量為N2次復數乘法和N*(N-1)次復數乘法。當采用M次FFT時,由N=2M求得M
10、=logN,運算流圖有M級蝶形,每一級都由N/2個蝶形運算構成,這樣每一級蝶形運算都需要N/2次復數乘法和N次復數加法。M級運算共需要復數乘法次數為C=N/2*M,復數加法次數為C=N*M。當N值較大時,FFT減少運算量的特點表現的越明顯。 FFT算法的運算規律及編程思想實現FFT運算的核心是蝶形運算,找出蝶形運算的規律是編程的基礎。對點的FFT共有M級運算,用L表示從左到右的運算級數(L=1,2,M )。第L級共有個不同指數的旋轉因子,用R表示這些不同指數旋轉因子從上到下的順序(R=0,1,B-1)。第R個旋轉因子的指數,旋轉因子指數為P的第一個蝶的第一節點標號k從R開始,由于本級中旋轉因子
11、指數相同的蝶共有個,且這些蝶的相鄰間距為,故旋轉因子指數為P的最后一個蝶的第一節點標號k為:,本級中各蝶的第二個節點與第一個節點都相距B點。總結上述運算規律,可采用如下運算方法進行DIT-FFT運算。首先讀入數據,根據數據長度確定運算級數M,運算總點數,不足補0處理。然后對讀入數據進行數據倒序操作。運算時,先算出該級不同旋轉因子的個數(也是該級中各個蝶形運算兩輸入數據的間距),再從R=0開始按序計算,直到R=B-1結束。每個R對應的旋轉因子指數。3 軟件簡介3.1 Matlab簡介70年代后期,身為美國New Mexico大學計算機系系主任的Cleve Moler發現學生用
12、FORTRAN編寫接口程序很費時間,于是他開始自己動手,利用業余時間為學生編寫EISPACK和LINPACK的接口程序。Cleve Moler給這個接口程序取名為Matlab。1984年,為了推廣Matlab在數值計算中的應用,Cleve Moler、Johon Little等正式成立了Math works公司,從而把Matlab推向市場,并開始了對Matlab工具相等的開發設計。 Matlab軟件概況Matlab是MatrixLaboratory的縮寫,意為矩陣實驗室。它具有強大的矩陣處理功能和繪圖功能,進還能進行文字處理,繪圖,建模仿真等功能。隨著版本的不斷升級,它在數值計算及符
13、號計算功能上得到了進一步完善。Matlab已經發展成為多學科、多種工作平臺的功能強大的大型軟件。在歐美等高校,Matlab已經成為線性代數、自動控制理論、概率論及數理統計、數字信號處理、時間序列分析、動態系統仿真等高級課程的基本教學工具。Matlab軟件打開后,其展現的窗口圖如下:圖3-1 運行Matlab窗口圖 Matlab的特點Matlab有以下一些特點:Matlab的幫助功能很強大,自帶有詳細的幫助手冊,基于HTML的完整的幫助功能,也可以用help命令來得到幫助信息。程序語法設計自由度大,方便我們編程。還有一個原因使Matlab受人們歡迎的,那就是Matlab源程序具有很大的開放性。除
14、了內部函數以外,所有Matlab的核心文件和工具箱文件都是可讀可改的源文件,用戶可通過對源文件的修改以及加入自己的文件構成新的工具箱。Matlab有強大的的圖形繪制功能。在Matlab里,數據可視化的操作非常簡單易用。Matlab還有較強的編輯圖形界面的能力。可以用來聲成圖解和可視化的二維、三維圖。Matlab還擁有功能強大的各種工具箱。其工具箱分為兩類:功能性工具箱和學科性工具箱。功能性工具箱主要用來擴充其符號計算功能,圖示建模仿真功能,文字處理功能以及與硬件實時交互功能。功能性工具箱用于多種學科。而學科性工具箱是專業性比較強的,如(control、signal proceessing 、c
15、ommumnication) toolbox等。這些工具箱都是由該領域內學術水平很高的專家編寫的,所以用戶無需編寫自己學科范圍內的基礎程序,而直接進行高,精,尖的研究,能極大地促進我們的學習研究工作。雖然Matlab有很多優點,但它也有一些缺點,比如:由于Matlab的程序不用編譯等預處理,也不生成可執行文件,程序為解釋執行,所以速度較慢。3.2 GUI簡介圖形用戶界面(GUI),是一種提供人機交互的工具和方法。GUI是包含圖形對象,如窗口、圖標、菜單和文本等圖文并茂的用戶界面。一個設計非常優秀的GUI能夠非常直觀的使用戶知道如何操作Matlab界面,了解設計者開發的意圖。界面設計打開GUI后
16、未設置任何屬性的界面如下圖所示:圖3-2 GUI界面用MATLAB圖形用戶界面開發環境設計GUI的一般步驟是:1.進行界面設計。2.設計控件屬性。3.進行M語言編程。以本設計要求為例介紹。第一步,該選擇本圖形用戶界面需要的控件:八個推按鈕(Push button),用來運行和退出。六個軸對象(axes)用來顯示信號時域波形,頻譜圖,和兩種不同FFT實現的頻譜圖,即運用Matlab自帶的。第二步,設置各個對象的屬性。如果要設置各個對象在表面上的寓意,只要改變它的string即可。Tag是它的本質屬性,是唯一的。控制屬性完成后,圖形用戶界面如圖所示。圖3-3 控件屬性設置完成后的圖形用戶界面第三步
17、,編寫回調函數。組件事件的發生是通過回調函數進行工作的。回調函數是用戶指定組件需要完成一定動作的函數,如本次設計中單擊按鈕后的功能就是由編寫回調函數實現的。一個組件中可以包括多個回調函數,但是幾乎每一個組件都有的屬性是Callback屬性。GUIDE可創建一個M回調函數文件的構架,文件將自動處理并將所有文件的句柄傳遞到handles結構數組中。Handles是GUI中一個特殊的結構數組,它是GUI中所有組件共用的一個結構。在handles結構數組中還可以添加用戶自定義的,在不同的回調函數之間共享的數據。回調函數的聲明格式為:Function object_Callback(hObject,ev
18、entData,handles)聲明格式各部分為:object為發生事件控制的Tag屬性字符串。hObject為發生事件的控制句柄。eventData為保留字段。本設計中各個按鈕回調函數完成3個任務:1得到用戶輸入圖片。例如當點擊原圖按鈕時,就會得到圖片路徑選擇路徑,得到圖片。圖3-4 得到圖片2計算數據。3建立圖形。3.3對比結果與分析得到原圖的兩個圖形對比如下:圖3-5 原圖對比由以上兩圖對比可以看出,自建的原圖和自帶的原圖得到的結果并不是完全一樣的,在色彩上有差別,明暗程度不一樣,自建的比自帶的顏色更鮮明,更深。圖3-6 FFT對比圖由以上兩圖對比可以看出,自建的fft和系統自帶的iff
19、t也是有細微的差別的,自建的得到的圖片比系統自帶的圖像顏色更甚而且由中間匯聚的光束可以看出,自建的函數得到的結果光束比較大,發散的范圍更廣,而系統自帶的函數得到的結果相對來說比較窄。圖3-7 IFFT對比圖由以上兩圖對比可以看出,自建的IFFT和系統自帶的IFFT總體上是一樣的,但是有細微的差別,自建的相對來說顏色較暗,更深而自帶的得到的圖像顏色更亮更鮮明。4心得體會通過本課程設計使我了解了數字圖像的基本概念,掌握數字圖像處理的基本內容,如圖像點運算、幾何變換、增強處理、圖像復原等的基本原理和Matlab實現方法。通過本次課程設計,讓我們掌握如何學習一門語言,如何進行資料查閱搜集,如何自己解決
20、問題等方法,養成良好的學習習慣。擴展理論知識,培養學生的綜合設計能力。本次課設是通過用Matlab實現FFT的設計,對圖像信號進行分析,并畫出采樣信號的時域與頻域圖。把自己編寫的FFT算法與Matlab自帶FFT算法進行比較。程序運行調試時,自己選擇輸入要采樣的圖像信號,采樣像素以及要變換的范圍,可以實現對不同信號的信號采樣和進行不同點的FFT運算。在之前數字信號處理的學習以及完成實驗的過程中,已經使用過Matlab,對其有了一些基礎的了解和認識,通過這次的課程設計使我進一步了解了信號的產生,采樣及頻譜分析的方法。讓我感受到只有在了解課本知識的前提下,才能更好的應用這個工具,并且熟練的應用Ma
21、tlab也可以很好的加深我對課程的理解,方便我的思維。這次課程設計使我了解了Matlab的使用方法,提高了自己的分析和動手實踐能力。同時我相信,進一步加強對MATLAB的學習與研究對我今后的學習將會起到很大的幫助。這次的課程設計是對本學期所學知識的一次重要鞏固,使得在課堂上掌握的知識得到了真正的運用。在學習的過程中和同學討論,更明白了理論知識與實踐的聯系。書到用時方恨少,有些知識學會是一回事,掌握是一回事,但應用起來,確實不是那么簡單的,需要很多知識的融會貫通。程序運行調試初期,曾經多次出現錯誤、不能產生圖形等問題,但在我翻閱資料認真改正及老師同學的幫助下基本功能還是完成了,經過1個星期的上機
22、實習,程序已得到一些完善,能完成基本的要求的功能。最后經過努力,又深入學習了圖形用戶界面(GUI),完成了選做要求的人機對話界面。學習就是一個了解,疑惑,進而解惑的過程,這次課設就是提供了這樣一個發現自己知識漏洞,與同學老師探討進行解惑的的機會。通過這次課程設計,我更深刻的了解了Matlab的運用,重新復習了FFT 中的重要的變換的程序,對課本上的知識有了更深的理解,使我對數字信號處理有了系統的認知。在這里特別感謝魏老師和我身邊的同學們,他們給了我們很大的發揮空間,讓我們真正自己動手真正掌握了知識,感謝他們細心指導,他們解開了我在實習中出現的諸多知識死角,謝謝大家!參考文獻1樓順天,李博菡.基
23、于MATLAB的系統分析與設計信號處理.西安電子科技大學出版社,19982奧本海姆.離散時間信號處理.科學出版社,20003宗孔德,胡廣書.數字信號處理.清華大學出版社,19974程佩青.數字信號處理教程.北京:清華大學出版社出版,20015高西全 丁玉美等.數字信號處理.北京:電子工業出版社,20096陳杰.Matlab寶典.電子工業出版社7蘇金明 張蓮花 劉波.MATLAB工具箱應用,電子工業出版社附錄 Matlab源程序function image_process_FFT()filename, pathname=uigetfile('*.jpg;*.tif;*.bmp;*.gif
24、' ,'File Selector');image=imread(strcat(pathname,filename); if ndims(image)=3 image=rgb2gray(image);endscrsz=get(0,'ScreenSize');figure('position',0 0 scrsz(3)-1 scrsz(4);set(gcf,'Name','快速傅里葉變換');subplot(2,3,1);imshow(image);title('原始圖像');subplot(
25、2,3,4);imshow(image);title('原始圖像');r,c=size(image);array=image;t=log2(r);t1=floor(t);t2=ceil(t);if t1=t2 array(2t2,c)=0;endr1,c1=size(array);t=log2(c1);t3=floor(t);t4=ceil(t);if t3=t4 array(r1,2t4)=0;end r1,c1=size(array);n=r1/2;data_col=zeros(1,n,'double'); for m=1:n data_col(m)=exp
26、(-1i*2*pi*(m-1)/r1);endn=c1/2;data_row=zeros(1,n,'double'); for m=1:n data_row(m)=exp(-1i*2*pi*(m-1)/r1);endarray=transform_fft2(array);Ft=fftshift(array);S1=log(1+abs(Ft);subplot(2,3,2);imshow(S1,);title('自建FFT結果');array=transform_ifft2(array);array=abs(array);array=array(1:r,1:c);s
27、ubplot(2,3,3);imshow(array,);title('自建IFFT結果');F=fft2(image);FC=fftshift(F);S=log(1+abs(FC);subplot(2,3,5)imshow(S,);title('內置FFT結果');array=ifft2(F);array=round(abs(array);subplot(2,3,6);imshow(array,);title('內置IFFT結果');returnfunction array=transform_fft2(array)array=double(a
28、rray);r1 c1=size(array);for j=1:r1 array(j,:)=transform_fft(array(j,:);endfor j=1:c1 array(:,j)=transform_fft(array(:,j);endfunction array1=transform_fft(array)N=length(array);n=N/2;w=zeros(1,n,'double'); for m=1:n w(m)=exp(-1i*2*pi*(m-1)/N);endp=log2(N);array1=zeros(1,N,'double');fo
29、r q=1:p t1=2(q-1); t2=2(p-1); for k=0:(t2/t1-1) for j=0:(t1-1) if mod(q,2)=1 data1=array(k*t1+j+1); data2=array(k*t1+j+t2+1); array1(k*t1*2+j+1)=data1+data2; array1(k*t1*2+j+t1+1)=(data1-data2)*w(k*t1+1); else data1=array1(k*t1+j+1); data2=array1(k*t1+j+t2+1); array(k*t1*2+j+1)=data1+data2; array(k*
30、t1*2+j+t1+1)=(data1-data2)*w(k*t1+1); end end endendif mod(p,2)=1 return else array1=array; returnendfunction array=transform_ifft2(array)array=conj(array);r1,c1=size(array);for i=1:r1 array(i,:)=transform_fft(array(i,:);endfor i=1:c1 array(:,i)=transform_fft(array(:,i);endarray=array/(r1*c1);附錄 GUI
31、源程序function varargout = untitled3(varargin)gui_Singleton = 1;gui_State = struct('gui_Name', mfilename, . 'gui_Singleton', gui_Singleton, . 'gui_OpeningFcn', untitled3_OpeningFcn, . 'gui_OutputFcn', untitled3_OutputFcn, . 'gui_LayoutFcn', , . 'gui_Callback&
32、#39;, );if nargin && ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);end if nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);endfunction untitled3_OpeningFcn(hObject, eventdata, handles, varargin)handles.output = hObject;gui
33、data(hObject, handles); function varargout = untitled3_OutputFcn(hObject, eventdata, handles) varargout1 = handles.output;function pushbutton1_Callback(hObject, eventdata, handles) filename, pathname=uigetfile('*.jpg;*.tif;*.bmp;*.gif' ,'File Selector');image=imread(strcat(pathname,f
34、ilename); if ndims(image)=3 image=rgb2gray(image);endscrsz=get(0,'ScreenSize');set(gcf,'Name','快速傅里葉變換');axes(handles.axes1);imshow(image);title('原圖); function pushbutton2_Callback(hObject, eventdata, handles) filename, pathname=uigetfile('*.jpg;*.tif;*.bmp;*.gif'
35、 ,'File Selector');image=imread(strcat(pathname,filename); if ndims(image)=3 image=rgb2gray(image);endscrsz=get(0,'ScreenSize');set(gcf,'Name','快速傅里葉變換');r,c=size(image);array=image;t=log2(r);t1=floor(t);t2=ceil(t);if t1=t2 array(2t2,c)=0;endr1,c1=size(array);t=log2(c
36、1);t3=floor(t);t4=ceil(t);if t3=t4 array(r1,2t4)=0;endr1,c1=size(array);n=r1/2;data_col=zeros(1,n,'double'); for m=1:n data_col(m)=exp(-1i*2*pi*(m-1)/r1);endn=c1/2;data_row=zeros(1,n,'double'); for m=1:n data_row(m)=exp(-1i*2*pi*(m-1)/r1);endarray=transform_fft2(array);Ft=fftshift(ar
37、ray);S1=log(1+abs(Ft);axes(handles.axes2);imshow(S1,);title('自建FFT');function pushbutton3_Callback(hObject, eventdata, handles) filename, pathname=uigetfile('*.jpg;*.tif;*.bmp;*.gif' ,'File Selector');image=imread(strcat(pathname,filename); if ndims(image)=3 image=rgb2gray(im
38、age);end scrsz=get(0,'ScreenSize');set(gcf,'Name','快速傅里葉變換');r,c=size(image);array=image;t=log2(r);t1=floor(t);t2=ceil(t);if t1=t2 array(2t2,c)=0;endr1,c1=size(array);t=log2(c1);t3=floor(t);t4=ceil(t);if t3=t4 array(r1,2t4)=0;end r1,c1=size(array);n=r1/2;data_col=zeros(1,n,
39、39;double'); for m=1:n data_col(m)=exp(-1i*2*pi*(m-1)/r1);endn=c1/2;data_row=zeros(1,n,'double'); for m=1:n data_row(m)=exp(-1i*2*pi*(m-1)/r1);endarray=transform_fft2(array);Ft=fftshift(array);S1=log(1+abs(Ft); array=transform_ifft2(array);array=abs(array);array=array(1:r,1:c);axes(handl
40、es.axes3);imshow(array,);title('自建IFFT);function pushbutton4_Callback(hObject, eventdata, handles)filename, pathname=uigetfile('*.jpg;*.tif;*.bmp;*.gif' ,'File Selector');image=imread(strcat(pathname,filename);if ndims(image)=3 image=rgb2gray(image);endscrsz=get(0,'ScreenSize
41、');set(gcf,'Name','快速傅里葉變換');axes(handles.axes4);imshow(image);title('原圖');function pushbutton5_Callback(hObject, eventdata, handles) filename, pathname=uigetfile('*.jpg;*.tif;*.bmp;*.gif' ,'File Selector');image=imread(strcat(pathname,filename); if ndims(
42、image)=3 image=rgb2gray(image);end scrsz=get(0,'ScreenSize');set(gcf,'Name','快速傅里葉變換');r,c=size(image); array=image;t=log2(r);t1=floor(t);t2=ceil(t);if t1=t2 array(2t2,c)=0;endr1,c1=size(array);t=log2(c1);t3=floor(t);t4=ceil(t);if t3=t4 array(r1,2t4)=0;end r1,c1=size(array);
43、n=r1/2;data_col=zeros(1,n,'double'); for m=1:n data_col(m)=exp(-1i*2*pi*(m-1)/r1);endn=c1/2;data_row=zeros(1,n,'double'); for m=1:n data_row(m)=exp(-1i*2*pi*(m-1)/r1);endarray=transform_fft2(array);Ft=fftshift(array);S1=log(1+abs(Ft); F=fft2(image);FC=fftshift(F);S=log(1+abs(FC);axes
44、(handles.axes5);imshow(S,);title('自帶FFT');function pushbutton6_Callback(hObject, eventdata, handles) filename, pathname=uigetfile('*.jpg;*.tif;*.bmp;*.gif' ,'File Selector');image=imread(strcat(pathname,filename);if ndims(image)=3 image=rgb2gray(image);endscrszset(gcf,'Name','快速傅里葉變換');r,c=size(image); array=image;t=log2(r);t1=floor(t);t2=ceil(t);if t1=t2 arra
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 安徽省合肥市六校聯盟2023-2024學年高三上學期期中聯考數學 無答案
- 企業并購財務問題的試題及答案
- 2025中級會計實務考試知識要點試題及答案
- 2025年工程法規考試的最優復習路徑分享試題及答案
- 2025年工程法規考試復習中的常用工具試題及答案
- 雙方友好項目協議書
- 2025年法律法規復習的幸福法則試題及答案
- 工程法規考試中的操作實踐試題及答案
- 2025年工程法規考試重要考點試題及答案
- 分包施工免責協議書
- 馬工程教材《公共財政概論》PPT-第四章 政府消費支出
- GB/T 29531-2013泵的振動測量與評價方法
- GB/T 16422.2-2022塑料實驗室光源暴露試驗方法第2部分:氙弧燈
- GA/T 832-2014道路交通安全違法行為圖像取證技術規范
- 博士生招生面試評分表
- SWOT分析法很全面課件
- 膀胱造瘺的護理課件
- 基坑工程施工驗收記錄表
- 消防應急疏散演練人員簽到表(標準通用版)
- 陜旅版五年級英語上冊句型詞匯知識點總結
- 漢字構字的基本原理和識字教學模式分析
評論
0/150
提交評論