線性卷積和線性相關的FFT算法:一 實驗目的 1:掌握FFT基2時間(或基2頻率)抽選法,理解其提高減少乘法運算次數提高運算速度的原理。 2:掌握FFT圓周卷積實現線性卷積的原理 二 實驗內容及要求 1.對N=2048或4096點的離散時間信號x(n),試用Matlab語言編程分別以DFT和FFT計算N個頻率樣值X(k), 比較兩者所用時間的大小。 2.對N/2點長的x(n)和N/2點長的h(n),試用Matlab語言編程實現以圓周卷積代替線性卷積,并比較圓周卷積法和直接計算線性卷積兩者的運算速度。 三預做實驗 1.FFT與DFT計算時間的比較 (1)FFT提高運算速度的原理 (2)實驗數據與結論 2.圓周卷積代替線性卷積的有效性實驗 (1)圓周卷積代替線性卷積的原理 (2)實驗數據和結論 FFT提高運算速度的原理 FFT算法將長序列的DFT分解為短序列的DFT。N點的DFT先分解為2個N/2點的DFT,每個N/2點的DFT又分解為N/4點的DFT,等等。最小變換的點數即所謂的“基數”。因此,基數為2的FFT算法的最小變換(或稱蝶型)是2點的DFT。一般地,對N點FFT,對應于N個輸入樣值,有N個頻域樣值與之對應。
上傳時間: 2013-10-26
上傳用戶:erkuizhang
PLC 以 其 可靠性高、抗干擾能力強、配套齊全、功能完善、適應性強等特點,廣泛應用于各種控制領域。PLC作為通用工業控制計算機,是面向工礦企業的工控設備,使用梯形圖符號進行編程,與繼電器電路相當接近,被廣大工程技術人員接受。但是在實際應用中,如何編程能夠提高PLC程序運行速度是一個值得我們思考研究的問題。1 PLC工作原理PLC 與 計 算機的工作原理基本相同,即在系統程序的管理下,通過運行應用程序完成用戶任務。但兩者的工作方式有所不同。計算機一般采用等待命令的工作方式,而PLC在確定了工作任務并裝人了專用程序后成為一種專用機,它采用循環掃描工作方式,系統工作任務管理及應用程序執行都是用循環掃描方式完成的。PLC 有 兩 種基本的工作狀態,即運行(RUN)與停止(STOP)狀態。在這兩種狀態下,PLC的掃描過程及所要完成的任務是不盡相同的,如圖1所示。 PLC在RUN工作狀態時,執行一次掃描操作所的時間稱為掃描周期,其典型值通常為1一100nis,不同PLC廠家的產品則略有不同。掃描周期由內部處理時間、輸A/ 輸出處理執行時間、指令執行時間等三部分組成。通常在一個掃描過程中,執行指令的時間占了絕大部分,而執行指令的時間與用戶程序的長短有關。用戶 程 序 是根據控制要求由用戶編制,由許多條PLC指令所組成。不同的指令所對應的程序步不同,以三菱FX2N系列的PLC為例,PLC對每一個程序步操作處理時間為:基本指令占0.741s/步,功能指令占幾百微米/步。完成一個控制任務可以有多種編制程序的方法,因此,選擇合理、巧妙的編程方法既可以大大提高程序運行速度,又可以保證可靠性。 提高PLC程序運行速度的幾種編程方法2.1 用數據傳送給位元件組合的方法來控制輸出在 PL C應 用編程中,最后都會有一段輸出控制程序,一般都是用邏輯取及輸出指令來編寫,如圖2所示。在圖2所示的程序中,邏輯取的程序步為1,輸出的程序步為2,執行上述程序共需3個程序步。通常情況下,PLC要控制的輸出都不會是少量的,比如,有8個輸出,在條件滿足時要同時輸出。此時,執行圖2所示的程序共需17個程序步。若我們通過位元件的組合并采用數據傳送的方法來完成圖2所示的程序,就會大大減少程序步驟。在三 菱 PLC中,只處理ON/OFF狀態的元件(如X,Y,M和S),稱為位元件。但將位元件組合起來也可以處理數據。位元件組合由Kn加首元件號來表示。位元件每4bit為一組組合成單元。如KYO中的n是組數,當n=1時,K,Yo 對應的是Y3一Yo。當n二2時,KZYo對應的是Y7一Yo。通過位元件組合,就可以用處理數據的方式來處理位元件,圖2程序所示的功能可用圖3所示的傳送數據的方式來完成。
上傳時間: 2013-11-11
上傳用戶:幾何公差
1.以二維數組list[N+1] 表示地圖,N表示區域數目,數組中以元素值為0表示不鄰接,1表示鄰接,限定區域數目N<=50. 2.用戶先輸入區域數目N,再輸入鄰接區域的代碼,鄰接可只寫一次,區域的代碼為0~N,N個為區域,一個為外部區域,或輸入N-1,則可不包括外部區域,N個區域由用戶定義 3.輸出時,采用一一對應的方法,一個區域對應一種顏色 形式:區域代碼==》顏色代碼(1~4)=》顏色 4.本程序可為任意一張的地圖染色,并且至多只染四種顏色
上傳時間: 2015-01-10
上傳用戶:1966640071
約瑟夫問題有原始的約瑟夫和發展了的約瑟夫兩種。 原始的約瑟夫的描述: 古代某法官要判決N個犯人的死刑,他有一條荒唐的法律,將犯人站成一個圓圈,從第S個人開始數起,每數到第D個犯人,就拉出來處決,然后再數D個,數到的人再處決———直到剩下的最后一個可赦免。 發展的約瑟夫的描述: 古代某法官要判決N個犯人的死刑,但這N個人每人持有一個密碼,他有一條荒唐的法律,將犯人站成一個圓圈,法官先給出一個密碼M,從第S個人開始數起,每數到第M個犯人,就拉出來處決,再根據這個人所持有的密碼F,然后再數F個,數到的人再處決,以此類推———直到剩下的最后一個可赦免。
標簽: 發展
上傳時間: 2014-01-13
上傳用戶:moshushi0009
經典c程序100例==1--10 【程序1】 題目:有1、2、3、4個數字,能組成多少個互不相同且無重復數字的三位數?都是多少? 1.程序分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列后再去 掉不滿足條件的排列。 2.程序源代碼: main() { int i,j,k printf("\n") for(i=1 i<5 i++) /*以下為三重循環*/ for(j=1 j<5 j++) for (k=1 k<5 k++) { if (i!=k&&i!=j&&j!=k) /*確保i、j、k三位互不相同*/ printf("%d,%d,%d\n",i,j,k) }
上傳時間: 2014-01-07
上傳用戶:lizhizheng88
此為編譯原理實驗報告 學習消除文法左遞規算法,了解消除文法左遞規在語法分析中的作用 內含 設計算法 目的 源碼 等等.... 算法:消除左遞歸算法為: (1)把文法G的所有非終結符按任一種順序排列成P1,P2,…Pn 按此順序執行 (2)FOR i:=1 TO n DO BEGIN FOR j:=1 DO 把形如Pi→Pjγ的規則改寫成 Pi→δ1γ δ2γ … δkγ。其中Pj→δ1 δ2 … δk是關于Pj的所有規則; 消除關于Pi規則的直接左遞歸性 END (3)化簡由(2)所得的文法。即去除那些從開始符號出發永遠無法到達的非終結符的 產生規則。
上傳時間: 2015-03-29
上傳用戶:極客
算法介紹 矩陣求逆在程序中很常見,主要應用于求Billboard矩陣。按照定義的計算方法乘法運算,嚴重影響了性能。在需要大量Billboard矩陣運算時,矩陣求逆的優化能極大提高性能。這里要介紹的矩陣求逆算法稱為全選主元高斯-約旦法。 高斯-約旦法(全選主元)求逆的步驟如下: 首先,對于 k 從 0 到 n - 1 作如下幾步: 從第 k 行、第 k 列開始的右下角子陣中選取絕對值最大的元素,并記住次元素所在的行號和列號,在通過行交換和列交換將它交換到主元素位置上。這一步稱為全選主元。 m(k, k) = 1 / m(k, k) m(k, j) = m(k, j) * m(k, k),j = 0, 1, ..., n-1;j != k m(i, j) = m(i, j) - m(i, k) * m(k, j),i, j = 0, 1, ..., n-1;i, j != k m(i, k) = -m(i, k) * m(k, k),i = 0, 1, ..., n-1;i != k 最后,根據在全選主元過程中所記錄的行、列交換的信息進行恢復,恢復的原則如下:在全選主元過程中,先交換的行(列)后進行恢復;原來的行(列)交換用列(行)交換來恢復。
上傳時間: 2015-04-09
上傳用戶:wang5829
一個功放擴大器的程序,MCU是AT89C2051 帶有遙控器接收功能及音量控制PT2259 編碼器的檢測
標簽: 程序
上傳時間: 2013-12-13
上傳用戶:himbly
.數據結構 假設有M個進程N類資源,則有如下數據結構: MAX[M*N] M個進程對N類資源的最大需求量 AVAILABLE[N] 系統可用資源數 ALLOCATION[M*N] M個進程已經得到N類資源的資源量 NEED[M*N] M個進程還需要N類資源的資源量 2.銀行家算法 設進程I提出請求Request[N],則銀行家算法按如下規則進行判斷。 (1)如果Request[N]<=NEED[I,N],則轉(2);否則,出錯。 (2)如果Request[N]<=AVAILABLE,則轉(3);否則,出錯。 (3)系統試探分配資源,修改相關數據: AVAILABLE=AVAILABLE-REQUEST ALLOCATION=ALLOCATION+REQUEST NEED=NEED-REQUEST (4)系統執行安全性檢查,如安全,則分配成立;否則試探險性分配作廢,系統恢復原狀,進程等待。 3.安全性檢查 (1)設置兩個工作向量WORK=AVAILABLE;FINISH[M]=FALSE (2)從進程集合中找到一個滿足下述條件的進程, FINISH[i]=FALSE NEED<=WORK 如找到,執行(3);否則,執行(4) (3)設進程獲得資源,可順利執行,直至完成,從而釋放資源。 WORK=WORK+ALLOCATION FINISH=TRUE GO TO 2 (4)如所有的進程Finish[M]=true,則表示安全;否則系統不安全。
上傳時間: 2014-01-05
上傳用戶:moshushi0009
數據結構 假設有M個進程N類資源,則有如下數據結構: MAX[M*N] M個進程對N類資源的最大需求量 AVAILABLE[N] 系統可用資源數 ALLOCATION[M*N] M個進程已經得到N類資源的資源量 NEED[M*N] M個進程還需要N類資源的資源量 2.銀行家算法 設進程I提出請求Request[N],則銀行家算法按如下規則進行判斷。 (1)如果Request[N]<=NEED[I,N],則轉(2);否則,出錯。 (2)如果Request[N]<=AVAILABLE,則轉(3);否則,出錯。 (3)系統試探分配資源,修改相關數據: AVAILABLE=AVAILABLE-REQUEST ALLOCATION=ALLOCATION+REQUEST NEED=NEED-REQUEST (4)系統執行安全性檢查,如安全,則分配成立;否則試探險性分配作廢,系統恢復原狀,進程等待。 3.安全性檢查 (1)設置兩個工作向量WORK=AVAILABLE;FINISH[M]=FALSE (2)從進程集合中找到一個滿足下述條件的進程, FINISH[i]=FALSE NEED<=WORK 如找到,執行(3);否則,執行(4) (3)設進程獲得資源,可順利執行,直至完成,從而釋放資源。 WORK=WORK+ALLOCATION FINISH=TRUE GO TO 2 (4)如所有的進程Finish[M]=true,則表示安全;否則系統不安全。
上傳時間: 2013-12-24
上傳用戶:alan-ee