寒假時間讀了《數字訊號處理》(清華大學出版社)這本書,想要分享剛接觸的雷德演算法,此篇文章為本人淺見,如有錯誤,敬請批評指正。
目前本人是在學習快速傅利葉變換中接觸的雷德演算法,此演算法在fft快速傅利葉變換中非常重要,為了加深印象,幫助同學們更快的了解雷德演算法,特以此作為學習筆記,希望可以幫助大家。
看了資料書上以及一些部落格的解釋,不禁有點暈,個人覺得畫圖更加容易理解,通常地,我們以n = 8的離散序列為例,接觸過fft演算法的人對下圖應該不陌生:
自然順序十進位制數(i)
自然順序二進位制數
倒位序二進位制數
倒位序後十進位制數(j)
0000
0000
1001
1004
2010
0102
3011
1106
4100
0011
5101
1015
6110
0113
7111
1117
雷德演算法中的倒位序二進位制數相鄰兩項之間是有聯絡的,即下一位倒位序二進位制數可以由上一位倒位二進位制數推導得出,依次從左到右,可以總結出:首位如果是零,變0為1,運算停止,得到下一位倒位序數,但如果首位為1,進行變1為0,運算繼續,還要判斷下一位,進行反相運算,直至遇到0或者二進位制位數窮盡為止,如下圖:
現舉例說明,我們已知倒位序數j(000),首先我們需要判斷j的最高位為0還是1,當然在此例中首位為0,那麼變0為1,就得到了下一位倒位序數(100),由上一位倒位序數得到下一位倒位序數已完成,再舉一例,如果已知倒位序數j(100),顯然首位為1,變1為0,繼續下一位,則變0為1,遇0停止,得到下一位倒位序數為010。以此類推,便可得到八位倒位序二進位制數。
從此例中,我們以相同的方式應對更大n值的離散序列。根據演算法原理,我們可以寫出fft中雷德演算法部分:
void change(struct complex x,int size)
if(j>i) //將x(n)的碼位互換
}output(x,size);
}
第一次在網上分享,如有錯誤,敬請批評指正! 德雷福斯模型
新手是每個開始學習任何技能的人一開始的階段,包括未入門的外行人,這一階段的人,經驗很少或者根本就沒有,而所謂的經驗,指的是,通過實踐這項技術促進了思維的改變。明白到這點是很重要的,因為很多人以為,經驗就是指資歷 單純時間而言 其實並不是這樣,就好像乙個軟體開發人員號稱他有十年的經驗,其實每天都在重複...
FFT蝶形演算法,IFFT
consoletemplate.cpp 定義控制台應用程式的入口點。include stdafx.h include include define n 8 1024 define m 310 define pi 3.1415927 typedef struct comp number comp nu...
FFT實現演算法基礎
本文介紹 fft實現的數字基礎,fft是 dft 離散傅利葉變換 的快速演算法 fft 和dft 的特點是在時域中數值離散 時間離散 可以實現數字量化 在頻域中頻率離散 幅值離散,因此可用於數字裝置中進行運算。以下數字公式及結論詳細推導過程請查閱數字訊號處理。1.dft 的數學公式如下 dft公式可...