可預(yù)置報警器設(shè)計.doc_第1頁
可預(yù)置報警器設(shè)計.doc_第2頁
可預(yù)置報警器設(shè)計.doc_第3頁
可預(yù)置報警器設(shè)計.doc_第4頁
可預(yù)置報警器設(shè)計.doc_第5頁
已閱讀5頁,還剩21頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

唐 山 學(xué) 院 數(shù)字電子技術(shù) 課 程 設(shè) 計 題 目 可預(yù)置報警器設(shè)計 系 (部) 信息工程系 班 級 11電信本1 姓 名 孫甲秀 學(xué) 號 4110215132 指導(dǎo)教師 馬軍爽 樊艷 2013 年 7 月 1 日 至 7 月 5 日 共 1 周2013年 7 月 5 日課程設(shè)計成績評定表出勤情況出勤天數(shù) 缺勤天數(shù)成績評定出勤情況及設(shè)計過程表現(xiàn)(20分)課設(shè)答辯(20分)說明書(20分)設(shè)計成果(40分)總成績(100分)提問(答辯)問題情況綜合評定 指導(dǎo)教師簽名: 年 月 日目 錄1 引言12 matlab簡介23 設(shè)計思路33.1 總體框圖33.2 總體思路34 基于matlab的fft運算規(guī)律及編程思想44.1 圖片的采集44.2 dit-fft算法的基本原理44.3 dit-fft算法的運算規(guī)律及編程思想55 matlab程序的實現(xiàn)86 系統(tǒng)人機對話界面106.1 gui界面106.2 界面設(shè)計106.3 運行調(diào)試127 總結(jié)13參考文獻14附錄115附錄218課程設(shè)計說明書1 引言隨著信息時代的到來,計算機科學(xué)與技術(shù)突飛猛進地發(fā)展,數(shù)字信號處理已經(jīng)成為一門極其重要的學(xué)科和技術(shù)領(lǐng)域。以dsp為核心芯片的處理系統(tǒng)日益變成了數(shù)字信號處理系統(tǒng)的主流。對于有限長序列x(n),若要求其n點的傅里葉變換(dft)需要經(jīng)過次復(fù)數(shù)乘法運算和n*(n-1)次復(fù)數(shù)加法運算。隨著n的增加,運算量將急劇增加,而在實際問題中,n往往是較大的,如當(dāng)n=1024時,完成復(fù)數(shù)乘法和復(fù)數(shù)加法的次數(shù)分別為百萬以上,無論是用通用計算機還是用dsp芯片,都需要消耗大量的時間和機器內(nèi)存,不能滿足實時的要求。因此,dft的這種運算只能進行理論上的計算,不適合對實時處理要求高的場合。因此,研究作為dsp的快速算法的fft是相當(dāng)必要的,快速傅里葉變換(fft)是為提高dft運算速度而采用的一種算法,快速算法的種類很多,而且目前仍在改進和提高,它是根據(jù)離散傅里葉變換的奇、偶、虛、實等特性,對離散傅立葉變換的算法進行改進獲得的。基于本學(xué)期所學(xué)的dit-fft的運算規(guī)律和編程思想以及matlab的學(xué)習(xí)和使用,本課設(shè)要求在matlab環(huán)境下編寫基2 dit-fft算法實現(xiàn)對離散信號的快速傅里葉變換,再與matlab軟件自帶的fft函數(shù)實現(xiàn)對離散信號的傅里葉變換進行比較,如果得到的頻譜相同,那么我們編寫的程序就是正確的。我們通過這次課設(shè)任務(wù),應(yīng)用所學(xué)的知識,提高了獨立設(shè)計能力,了解并掌握matlab的一般使用方法。進一步提高綜合運用所學(xué)的理論知識獨立分析和解決問題的能力,與人合作的能力,不斷創(chuàng)新的能力,在設(shè)計中不斷發(fā)現(xiàn)弱點,并總結(jié)提高。此次課設(shè)使我們進一步了解了實踐,把知識用到了實踐中,為我們以后畢業(yè)設(shè)計、工作需要提供了必須的基礎(chǔ)。2 matlab簡介matlab是矩陣實驗室(matrix laboratory)的簡稱,是美國mathworks公司出品的商數(shù)學(xué)軟件,用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計算的高級技術(shù)計算語言和交互式環(huán)境,主要包括matlab和simulink兩大部分。matlab的應(yīng)用范圍非常廣,包括信號和圖像處理、通訊、控制系統(tǒng)設(shè)計、測試和測量、財務(wù)建模和分析以及計算生物學(xué)等眾多應(yīng)用領(lǐng)域。附加的工具箱(單獨提供的專用 matlab函數(shù)集)擴展了matlab環(huán)境,以解決這些應(yīng)用領(lǐng)域內(nèi)特定類型的問題。它以矩陣運算為基礎(chǔ),把計算、可視化、程序設(shè)計融合在一個簡單易用的交互式工作環(huán)境中,是一款數(shù)據(jù)分析和處理功能都非常強大的工程適用軟件。它可以將聲音文件變換為離散的數(shù)據(jù)文件,然后利用其強大的矩陣運算能力處理數(shù)據(jù),如數(shù)據(jù)濾波、傅立葉變換、時域和頻域分析、聲音回放以及各種圖的呈現(xiàn)等,它的信號處理與分析工具箱位語音信號分析提供了十分豐富的功能函數(shù),利用這些功能函數(shù)可以快捷而又方便的完成語音信號的處理和分析以及信號的可視化。數(shù)字信號處理是matlab重要應(yīng)用的領(lǐng)域之一。matlab既是一種直觀、高效的計算機語言,同時又是一個科學(xué)計算平臺。它為數(shù)據(jù)分析和數(shù)據(jù)可視化、算法和應(yīng)用程序開發(fā)提供了最核心的數(shù)學(xué)和高級圖形工具。操作界面如下圖所示:圖2-1 matlab操作界面3設(shè)計思路3.1總體框圖 系統(tǒng)總體流程圖如圖3-1所示。圖像信號采集完成信號時域圖完成信號頻率響應(yīng)編寫fft程序,畫出信號頻譜圖實現(xiàn)輸入信號的倒序?qū)崿F(xiàn)一級中不同種蝶形算運實現(xiàn)一級中相同種蝶形運算與matlab自帶的fft比較圖3-1系統(tǒng)總體框圖3.2總體思路本設(shè)計要求選定一個圖片,在matlab環(huán)境下編寫基2dit-fft算法;利用自己編寫的算法對已采集的圖像進行頻譜分析,并畫出圖像信號的時域與頻譜圖,并與matlab數(shù)字信號處理工具箱中的fft函數(shù)進行對比研究,驗證自編算法的正確性。4基于matlab的fft運算規(guī)律及編程思想4.1圖片的采集保存一張圖片,格式為bmp,jpg或者是gif中的任何一種。x=imread(a.jpg) 實現(xiàn)了對圖片的讀取。if ndims(x)=3 x=rgb2gray(x);end這些代碼實現(xiàn)了對圖片進行灰度變換,可以將原來是彩色的圖片變換成黑白色,目的是為了取點時方便簡單,而且速度更快,節(jié)省時間 。4.2 dit-fft算法的基本原理有限長序列x(n)的n點的dft定義為:基2fft算法基本思想是把原始的n點序列依次分解成一系列短序列,充分利用旋轉(zhuǎn)因子的周期性和對稱性,分別求出這些短序列對應(yīng)的dft,再進行適當(dāng)?shù)慕M合,得到原n點序列的dft,最終達到減少運算次數(shù),提高運算速度的目的。fft算法基本上可分為按時間抽取的fft算法(dit-fft)和按頻率抽取的fft算法(dif-fft)。旋轉(zhuǎn)因子的性質(zhì):(1)周期性(2)共軛對稱性(3)可約性按時間下標(biāo)的奇偶將n點x(n)分別抽取組成兩個n/2點序列,分別記為x1(n)和x2(n),將x(n)的dft轉(zhuǎn)化為x1(n)和x2(n)的dft的計算,求出與之對應(yīng)的x1(k)和x2(k),然后利用圖4-1所示的運算流程進行蝶形運算,得到原n點序列的dft。只要n是2的整數(shù)次冪,這種分解就可一直進行下去直到其dft就是本身的1點時域序列。用蝶形運算可表示為如圖4-1所示:圖4-1 dit-fft蝶形運算流圖符號當(dāng)采用m次fft時,由n=2m求得m=logn,運算流圖有m級蝶形,每一級都由n/2個蝶形運算構(gòu)成,這樣每一級蝶形運算都需要n/2次復(fù)數(shù)乘法和n次復(fù)數(shù)加法。m級運算共需要復(fù)數(shù)乘法次數(shù)為c=n/2*m,復(fù)數(shù)加法次數(shù)為c=n*m。一個完整的8點dit-fft運算流程如下圖所示。圖4-2 8點dit-fft運算流程當(dāng)n值較大時,fft減少運算量的特點表現(xiàn)的越明顯。4.3 dit-fft算法的運算規(guī)律及編程思想為了編寫dit-fft算法的運算程序,首先要分析其運算規(guī)律,總結(jié)編程思想并繪出程序框圖。1. 原位計算對點的fft共進行m級運算,每級由n/2個蝶形運算組成。在同一級中,每個蝶的輸入數(shù)據(jù)只對本蝶有用,且輸出節(jié)點與輸入節(jié)點在同一水平線上,這就意味著每算完一個蝶后,所得數(shù)據(jù)可立即存入原輸入數(shù)據(jù)所占用的數(shù)組元素(存儲單元),這種原位(址)計算的方法可節(jié)省大量內(nèi)存。2. 蝶形運算實現(xiàn)fft運算的核心是蝶形運算,找出蝶形運算的規(guī)律是編程的基礎(chǔ)。蝶形運算是分級進行的;每級的蝶形運算可以按旋轉(zhuǎn)因子的指數(shù)大小排序進行;如果指數(shù)大小一樣則可從上往下依次蝶算。對點的fft共有m級運算,用l表示從左到右的運算級數(shù)(l=1,2,m )。第l級共有個不同指數(shù)的旋轉(zhuǎn)因子,用r表示這些不同指數(shù)旋轉(zhuǎn)因子從上到下的順序(r=0,1,b-1)。第r個旋轉(zhuǎn)因子的指數(shù),旋轉(zhuǎn)因子指數(shù)為p的第一個蝶的第一節(jié)點標(biāo)號k從r開始,由于本級中旋轉(zhuǎn)因子指數(shù)相同的蝶共有個,且這些蝶的相鄰間距為,故旋轉(zhuǎn)因子指數(shù)為p的最后一個蝶的第一節(jié)點標(biāo)號k為:,本級中各蝶的第二個節(jié)點與第一個節(jié)點都相距b點。應(yīng)用原位計算,蝶形運算可表示成如下形式: (j)= (j)+ (j+b)* (j+b)= (j)-(j+b)* 總結(jié)上述運算規(guī)律,可采用如下運算方法進行dit-fft運算。首先讀入數(shù)據(jù),根據(jù)數(shù)據(jù)長度確定運算級數(shù)m,運算總點數(shù),不足補0處理。然后對讀入數(shù)據(jù)進行數(shù)據(jù)倒序操作。數(shù)據(jù)倒序后從第1級開始逐級進行,共進行m級運算。在進行第l級運算時,先算出該級不同旋轉(zhuǎn)因子的個數(shù)(也是該級中各個蝶形運算兩輸入數(shù)據(jù)的間距),再從r=0開始按序計算,直到r=b-1結(jié)束。每個r對應(yīng)的旋轉(zhuǎn)因子指數(shù),旋轉(zhuǎn)因子指數(shù)相同的蝶從上往下依次逐個運算,各個蝶的第一節(jié)點標(biāo)號k都是從r開始,以為步長,到(可簡取極值n-2)結(jié)束。整個蝶形運算流程圖如圖4-2所示。圖4-2 整個蝶形運算流程圖考慮到蝶形運算有兩個輸出,且都要用到本級的兩個輸入數(shù)據(jù),故第一個輸出計算完畢后,輸出數(shù)據(jù)不能立即存入輸入地址,要等到第二個輸出計算調(diào)用輸入數(shù)據(jù)完畢后才能覆蓋。這樣數(shù)據(jù)倒序后的運算可用三重循環(huán)程序?qū)崿F(xiàn)。3. 序列倒序為了保證運算輸出的x(k)按順序排列,要求序列x(n)倒序輸入,即在運算前要先對輸入的序列進行位序顛倒。如果總點數(shù)為的x(n)的順序數(shù)是用m位二進制數(shù)表示,則倒序數(shù)只需將順序數(shù)的二進制位倒置即可,按照這一規(guī)律用硬件電路和匯編語言很容易產(chǎn)生倒序數(shù)。但用matlab等高級語言實現(xiàn)倒序時,直接倒置二進制數(shù)位的方法不可取,還須找出產(chǎn)生倒序的十進制規(guī)律。圖4-2中數(shù)據(jù)倒序的程序流程圖如圖4-3所示。圖4-3倒序的程序流程圖將十進制順序數(shù)用i表示,與之對應(yīng)的二進制數(shù)用ib表示。十進制倒序數(shù)用j表示,與之對應(yīng)的二進制數(shù)用jb表示。jb是ib的位倒置結(jié)果,十進制順序數(shù)i增加1,相當(dāng)于ib最低位加1且逢2向高位進1,即相當(dāng)于jb最高位加1且逢2向低位進1。jb的變化規(guī)律反映到j(luò)的變化分二種情況:如果jb的最高位是0 (j=n/2),則直接由加1 (j=n/2),則要先將最高位變0 (j=j-n/2),再在次高位加1 (j=j+n/4)。但次高位加1時,同樣要判斷0、1值,如果是0 (jn/4),則直接加1 (j=j+n/4),否則要先將次高位變0 (j=j-n/4),再判斷下一位。依此類推,直到完成最高位加1,逢2向右進位的運算。利用這一算法可按順序數(shù)i的遞增順序,依次求得與之對應(yīng)的倒序數(shù)j。為了節(jié)省內(nèi)存,數(shù)據(jù)倒序可原址進行,當(dāng)i = j時不需要交換,當(dāng)i j時需要交換數(shù)據(jù)。另外,為了避免再次調(diào)換前面已經(jīng)調(diào)換過的一對數(shù)據(jù),只對ij的情況進行數(shù)據(jù)交換即可實現(xiàn)數(shù)據(jù)倒序操作。5 matlab程序?qū)崿F(xiàn)matlab提供的fft函數(shù)是一個計算dft的智能程序,能自動選擇快速算法進行dft運算。用a.jpg作為例子,運行調(diào)試程序。1. 程序運行開始時,首先點擊filenewm-file,出現(xiàn)一個名為editor-untitled的對話框,然后輸入程序代碼,。2. 輸入等程序代碼在fft.m文件中,如5-1所示。圖5-1 代碼輸入窗口3. 運行后就會出現(xiàn)如圖5-2所示的窗口。圖5-2 matlab界面對圖片進行進行fft變換,經(jīng)觀察,編寫fft程序得到的圖片與matlab中自帶的fft函數(shù)得到的圖總是基本一致,但是有細微差別,這是因為編寫的快速傅里葉變換計算信號的n點傅里葉變換要求n為2 的整數(shù)次冪,不夠的話信號將會被補零后運算,即參與運算的信號已經(jīng)不同(差別很小),所以fft運算后的結(jié)果也不盡相同,所示圖自然有細微的差別。由用matlab自帶fft函數(shù)實現(xiàn)的頻譜圖與用matlab編寫的fft程序?qū)崿F(xiàn)的頻譜圖相比較,可知,兩個算法計算后的結(jié)果幾乎相同,驗證了自編算法的正確性。6 系統(tǒng)人機對話界面6.1 gui簡介圖形用戶界面(gui),是一種提供人機交互的工具和方法。gui是包含圖形對象,如窗口、圖標(biāo)、菜單和文本等圖文并茂的用戶界面。6.2 界面設(shè)計用matlab圖形用戶界面開發(fā)環(huán)境設(shè)計gui點的一般步驟是:1.進行界面設(shè)計。2.設(shè)計控件屬性。3.進行m語言編程。以本設(shè)計要求為例介紹:首先運行matlab軟件,輸入guide,出現(xiàn)一個窗口,如圖6-1所示。圖6-1 新建gui窗口第一步,該選擇本圖形用戶界面需要的控件:點擊ok,就會出現(xiàn)gui的設(shè)計界面。按照設(shè)計思路,用七個推按鈕(push button),六個軸對象(axes),擺好每個空間的位置,并設(shè)計數(shù)值水平對齊,看起來更美觀。設(shè)計界面如圖6-2所示。圖6-2 設(shè)計界面第二步,設(shè)置控件屬性:雙擊組件可以設(shè)置文本框,推按鈕的屬性,如顯示大小,名稱和字體等。雙擊控件,出現(xiàn)屬性菜單。設(shè)置好屬性后就保存,系統(tǒng)自動生成一個.m文件。第三步,編寫回調(diào)函數(shù):組件事件的發(fā)生是通過回調(diào)函數(shù)進行工作的。控件設(shè)置完成后保存,然后運行g(shù)ui(操作為ctrl+t),就會進入editor窗口,加入各個控件功能的函數(shù)代碼。完成后保存即可,具體代碼見附錄。第四步,運行g(shù)ui:運行editor窗口的程序后,會彈出已經(jīng)激活的人機對話界面。系統(tǒng)人機對話界面如圖6-3所示。圖6-3 系統(tǒng)人機對話界面6.3 運行調(diào)試運行g(shù)ui,已經(jīng)彈出圖6-3所示的系統(tǒng)人機對話界面,然后點擊各推按鈕就會得到本設(shè)計的要求。運行結(jié)果如圖6-4所示。如果運行結(jié)束,可以通過點擊“退出”推按鈕退出該人機對話界面,返回matlab。圖6-4 運行結(jié)果7 總結(jié)為期兩周的課程設(shè)計在緊張的節(jié)奏中接近尾聲,時間雖然不是很長,但是這短時間的課設(shè)對我有很大的幫助,通過這次課設(shè)我發(fā)現(xiàn)了許多我應(yīng)該注意的問題同時也學(xué)會了很多器件的用法。從通過設(shè)計任務(wù)的分析到功能的劃分再到確定總體的設(shè)計方案,再到最后的每個功能部分的具體實現(xiàn),整個過程都需要我們組的人充分利用所學(xué)的知識進行思考借鑒。可以說,本次課程設(shè)計是針對前面所學(xué)的知識的一次綜合的檢測。總的來說,這次課設(shè)雖然很累,但非常充實。本次實習(xí)的主要內(nèi)容是通過用matlab實現(xiàn)fft的設(shè)計,把自己編寫的fft算法與matlab自帶fft算法進行比較。通過本課程設(shè)計使學(xué)生了解數(shù)字圖像的基本概念,掌握數(shù)字圖像處理的基本內(nèi)容,fft基本原理和matlab實現(xiàn)方法。讓我掌握了如何學(xué)習(xí)一門語言,如何進行資料查閱搜集,如何自己解決問題等方法,養(yǎng)成良好的學(xué)習(xí)習(xí)慣。本次課程設(shè)計使我還明白了怎樣使用matlab軟件和gui界面,如何正確的編寫代碼,如何合理的進行設(shè)計與運行。程序運行調(diào)試初期,曾經(jīng)多次出現(xiàn)錯誤、不能產(chǎn)生圖形等問題,但在我翻閱資料認真改正及老師同學(xué)的幫助下基本功能還是完成了,經(jīng)過1個星期的上機實習(xí),程序已得到一些完善,能完成基本的要求的功能。最后經(jīng)過努力,又深入學(xué)習(xí)了圖形用戶界面(gui),完成了選做要求的人機對話界面。但在設(shè)計中還有很多不足之處,如果把所設(shè)計的應(yīng)用到實踐中,由于設(shè)計的時候設(shè)想的情況并不是很全面,所以還是需要提高的。不過這都是我今后實踐和學(xué)習(xí)的寶貴經(jīng)驗,以上的不足之處我一定會克服,爭取在今后的實踐中不再出現(xiàn)上述的情況。我做完了課程設(shè)計學(xué)到了很多的知識與技能,從書本上學(xué)到的是我做課設(shè)的基礎(chǔ),是我學(xué)習(xí)的進一步的應(yīng)用。通過這次課設(shè)我學(xué)會了,綜合運用課程中所學(xué)到的理論知識去獨立完成一個設(shè)計課題,通過查閱手冊和文獻資料,培養(yǎng)了我獨立分析和解決實際問題的能力。這次課設(shè)雖然困難重重但是我感覺我收獲很大。因為整個過程都需要充分利用自己所學(xué)的知識進行思考借鑒,而且還需要額外補充很多知識。可以說,本次課程設(shè)計是針對前面所學(xué)的知識的一次比較綜合的檢測,又是對所學(xué)知識的一個補充。參考文獻1 范壽康.dsp技術(shù)與dsp芯片.北京電子工業(yè)出版社,20082 程佩青.數(shù)字信號處理教程.北京清華大學(xué)出版社出版,20013 高西全,丁玉美等.數(shù)字信號處理.北京電子工業(yè)出版社,20094 余成波,陶紅艷.數(shù)字信號處理及matlab 實現(xiàn).北京清華大學(xué)出版社,2008 5 曹弋,趙陽.matlab實用教程.北京電子工業(yè)出版社,2007 6 奧本海姆.離散時間信號處理.科學(xué)出版社,20007 宗孔德,胡廣書.數(shù)字信號處理.清華大學(xué)出版社,1997附錄1matlab源程序:function image_process_fft()x=imread(a.jpg); scrsz=get(0,screensize);figure(position,0 0 scrsz(3)-1 scrsz(4);set(gcf,name,快速傅里葉變換);subplot(2,3,1);imshow(x);title(原始圖像);if ndims(x)=3 x=rgb2gray(x);endsubplot(2,3,4);imshow(x);title(灰度圖像);r,c=size(x);array=x;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;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(array);s1=log(1+abs(ft);subplot(2,3,2);imshow(s1,);title(自建fft2函數(shù)結(jié)果);array=transform_ifft2(array);array=abs(array);array=array(1:r,1:c);subplot(2,3,3);imshow(array,);title(自建ifft2函數(shù)結(jié)果);f=fft2(x);fc=fftshift(f);s=log(1+abs(fc);subplot(2,3,5)imshow(s,);title(內(nèi)置fft2函數(shù)結(jié)果);array=ifft2(f);array=round(abs(array);subplot(2,3,6);imshow(array,);title(內(nèi)置ifft2函數(shù)結(jié)果);returnfunction array=transform_fft2(array)array=double(array);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);end p=log2(n);array1=zeros(1,n,double);for 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*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);附錄2gui源程序:function varargout = untitled(varargin)gui_singleton = 1;gui_state = struct(gui_name, mfilename, . gui_singleton, gui_singleton, . gui_openingfcn, untitled_openingfcn, . gui_outputfcn, untitled_outputfcn, . gui_layoutfcn, , . gui_callback, );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:);endfunction untitled_openingfcn(hobject, eventdata, handles, varargin)handles.output = hobject;guidata(hobject, handles);function varargout = untitled_outputfcn(hobject, eventdata, handles)varargout1 = handles.output;function pushbutton1_callback(hobject, eventdata, handles)axes(handles.axes1);x=imread(a.jpg); imshow(x);title(原圖);function pushbutton2_callback(hobject, eventdata, handles)axes(handles.axes2);img=imread(a.jpg);f=rgb2gray(img);f=fft2(f);fs=fftshift(f);s=log(1+abs(fs);imshow(s,);title(內(nèi)置fft圖);function pushbutton3_callback(hobject, eventdata, handles)axes(handles.axes3);img=imread(a.jpg);f=rgb2gray(img);f=fft2(f);fs=fftshift(f); s=log(1+abs(fs);fr=real(ifft2(ifftshift(fs); ret=im2uint8(mat2gray(fr);imshow(ret,);title(內(nèi)置ifft圖);function pushbutton4_callback(hobject, eventdata, handles)axes(handles.axes4);x=imread(a.jpg);f=rgb2gray(x);imshow(f);title(灰度圖);function pushbutton5_callback(hobject, eventdata, handles)axes(handles.axes5);image=imread(a.jpg);if ndims(image)=3 image=rgb2gray(image);endr,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;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(array);s1=log(1+abs(ft);imshow(s1,);title(自建fft圖);function array=transform_fft2(array)array=double(array);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);for 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*t1*2+j+t1+1)=(data1-data2)*w(k*t1+1); end end endendif mod(p,2)=1 return else array1=array; returnendfunction pushbutton6_callback(hobject, eventdata, handles)axes(handles.axes6);image=imread(a.jpg);if ndims(image)=3 image=rgb2gray(image);endr,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;endr1,c1=size(array);n=r1/2;data_col=zeros(1,n,double);for m=1:n data_col(

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論