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

下載本文檔

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

文檔簡(jiǎn)介

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

最新文檔

評(píng)論

0/150

提交評(píng)論