小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

怎么理解離散傅里葉變換(一)實數(shù)形式傅里葉變換

 imelee 2016-01-27
如何理解離散傅里葉變換(一)實數(shù)形式傅里葉變換

如何理解離散傅里葉變換(一)

——實數(shù)形式傅里葉變換

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

本文作者:隨煜而安  二零一五年五月二十三日

原創(chuàng)作者:July、dznlong  

推薦閱讀:

1.The Scientist and Engineer's Guide to Digital Signal Processing,By Steven W. Smith, Ph.D。http://www./pdfbook.htm。

2.July大神博客  點擊打開鏈接

3.dznlong大神博客   點擊打開鏈接

4.高等數(shù)學/數(shù)學分析中關(guān)于傅里葉級數(shù),三角函數(shù)正交系的部分內(nèi)容

5.深入淺出的講解傅里葉變換(個人感覺講的一般,但是配圖很形象幫助理解)  點擊打開鏈接

說明:

I、本文中闡述的離散傅里葉變換方法是July、dznlong 兩位根據(jù)此書:The Scientist and Engineer's Guide to Digital Signal Processing,By Steven W. Smith, Ph.D.而翻譯而成的,此書地址:http://www./pdfbook.htm

II、同時,有相當一部分內(nèi)容編輯整理自dznlong、July兩位的博客,本文是根據(jù)兩人文章的思路添加上一些個人的想法以及補充一些細節(jié)的成果。上面也貼出了其博客地址,向原創(chuàng)的作者表示致敬。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

談?wù)劯道锶~變換

開始進入正題:

關(guān)于傅立葉變換,無論是書本還是在網(wǎng)上可以很容易找到關(guān)于傅立葉變換的描述,但是大都是些故弄玄虛的文章,太過抽象,盡是一些讓人看了就望而生畏的公式的羅列,讓人很難能夠從感性上得到理解”---dznlong,

那么,到底什么是傅里葉變換算法?傅里葉變換所涉及到的公式具體有多復雜列?這篇文章我借鑒兩位大神的思路,并且先不列出一些復雜的公式,一步一步的引出我們要研究的東西,盡量做到通俗易懂。

傅里葉變換(Fourier transform)是一種線性的積分變換。因其基本思想首先由法國學者傅里葉系統(tǒng)地提出,所以以其名字來命名以示紀念。傅里葉變換就是一種變換而已,只是這種變換是從時間轉(zhuǎn)換為頻率的變化。

傅里葉變換的提出:

傅立葉是一位法國數(shù)學家和物理學家,原名是Jean Baptiste Joseph Fourier(1768-1830), Fourier于1807年在法國科學學會上發(fā)表了一篇論文,論文里描述運用正弦曲線來描述溫度分布,論文里有個在當時具有爭議性的決斷:任何連續(xù)周期信號都可以由一組適當?shù)恼仪€組合而成。 當時審查這個論文拉格朗日堅決反對此論文的發(fā)表,而后在近50年的時間里,拉格朗日堅持認為傅立葉的方法無法表示帶有棱角的信號,如在方波中出現(xiàn)非連續(xù)變化斜率。直到拉格朗日死后15年這個論文才被發(fā)表出來。

誰是對的呢?拉格朗日是對的:正弦曲線無法組合成一個帶有棱角的信號。但是,我們可以用正弦曲線來非常逼近地表示它,逼近到兩種表示方法不存在能量差別,基于此,傅立葉是對的。

我們觀察下圖,直觀的感受一下這個決斷和傅里葉變換究竟在做怎樣的一件事情。(圖片來自:點擊打開鏈接)


    在這兩幾幅圖中,分別代表了兩個傅里葉變換。最前面黑色的線代表的就是要進行變換的時域上的函數(shù)f(t),它可以表示成后面所有彩色表示的正弦波疊加而成的總和。而后面依不同顏色排列而成的正弦波就是組合為f(t)的各個分量。這些正弦波按照頻率從低到高從前向后排列開來,而每一個波的振幅都是不同的。一定有細心的讀者發(fā)現(xiàn)了,在兩個正弦波之間可能還有一條直線,那并不是分割線,而是振幅為0的正弦波!也就是說,為了組成特殊的曲線,有些正弦波成分是不需要的,或者說時域上的函數(shù)f(t)中不含有這種對應(yīng)頻率的分量。來看一個更為詳細一些的圖:


    對于每個正弦波分量,如果我們只看它的頻率和幅值。那么對于所有分量,就形成了一個以頻率為自變量,幅值為因變量的頻率域上的函數(shù)F(w),也就是頻域圖像。這時,一個時域——頻域的映射就形成了。這個例子中我們可以看出,一個時域上的近似矩形波被分解成了不同頻率分量的正弦波,反過來看,一些不同頻率的正弦波疊加成了一個矩形波。要注意的是,在實際中通常是將時域的函數(shù)變換為不同頻率的正弦波和余弦波的疊加,而不僅僅是一些正弦波的疊加,盡管這并沒有什么不同,因為我們知道正余弦是可以互相表示的。

    到此,在沒有任何公式的情況下,我們也大概知曉了傅里葉變換在做怎樣的一件事情。


傅立葉變換分類

   根據(jù)原信號的不同類型,我們可以把傅立葉變換分為四種類別:
1、非周期性連續(xù)信號        傅立葉變換(Fourier Transform) 
2、周期性連續(xù)信號           傅立葉級數(shù)(Fourier Series) 
3、非周期性離散信號       離散時域立葉變換(Discrete Time Fourier Transform) 
4、周期性離散信號           離散傅立葉變換(Discrete Fourier Transform) 

現(xiàn)在我們要列出一些公式了,先觀察即可,后面會做出詳細的解釋。

     1.連續(xù)傅里葉變換

     一般情況下,若“傅里葉變換”一詞不加任何限定語,則指的是“連續(xù)傅里葉變換”。連續(xù)傅里葉變換將平方可積的函數(shù)f(t)表示成復指數(shù)函數(shù)的積分或級數(shù)形式。

這是將頻率域的函數(shù)F(ω)表示為時間域的函數(shù)f(t)的積分形式。

連續(xù)傅里葉變換的逆變換 (inverse Fourier transform)為:

即將時間域的函數(shù)f(t)表示為頻率域的函數(shù)F(ω)的積分。

2.傅里葉級數(shù)

連續(xù)形式的傅里葉變換其實是傅里葉級數(shù) (Fourier series)的推廣,因為積分其實是一種極限形式的求和算子而已。

對于周期函數(shù),其傅里葉級數(shù)是存在的:

其中Fn為復幅度。對于實值函數(shù),函數(shù)的傅里葉級數(shù)可以寫成:


其中an和bn是實頻率分量的幅度。

3.離散時域傅里葉變換
   離散傅里葉變換是離散時間傅里葉變換(DTFT)的特例(有時作為后者的近似)。DTFT在時域上離散,在頻域上則是周期的。DTFT可以被看作是傅里葉級數(shù)的逆變換。

4.離散傅里葉變換
   離散傅里葉變換(DFT),是連續(xù)傅里葉變換在時域和頻域上都離散的形式,將時域信號的采樣變換為在離散時間傅里葉變換(DTFT)頻域的采樣。在形式上,變換兩端(時域和頻域上)的序列是有限長的,而實際上這兩組序列都應(yīng)當被認為是離散周期信號的主值序列。即使對有限長的離散信號作DFT,也應(yīng)當將其看作經(jīng)過周期延拓成為周期信號再作變換。在實際應(yīng)用中通常采用快速傅里葉變換以高效計算DFT。

   為了在科學計算和數(shù)字信號處理等領(lǐng)域使用計算機進行傅里葉變換,必須將函數(shù)xn定義在離散點而非連續(xù)域內(nèi),且須滿足有限性或周期性條件。這種情況下,使用離散傅里葉變換(DFT),將函數(shù)xn表示為下面的求和形式:

其中Xk是傅里葉幅度。


現(xiàn)在我們已經(jīng)把四種類型的傅里葉變換的公式給出了,直接看這些公式,就像很多教科書那樣,我想大家跟我一樣都是一頭霧水。 下面是July、dznlong兩位大神給出的一些更為直觀的東西。

我們可以觀察思考下上述傅立葉變換的4種變體的特點

       下圖是四種原信號圖例(從上到下,依次是FT,F(xiàn)S,DTFT,DFT):


對于計算機來說只有離散的和有限長度的數(shù)據(jù)才能被處理。所以首先可以肯定的是,對于計算機中的研究,我們的時域信號需要是離散的。對于我們要處理的輸入信號,考慮如果是非周期性信號的普遍情況。我們需要用無窮多不同頻率的正弦曲線來表示,這對于計算機來說也是不可能實現(xiàn)的。所以頻率域上也要是離散的。所以基于上面的分析,我們下面重點討論和理解的是離散傅立葉變換(DFT),因為只有它才能被計算機適用。

 另外,每種傅立葉變換都分成實數(shù)和復數(shù)兩種方法,對于實數(shù)方法是最好理解的,但是復數(shù)方法就相對復雜許多了,需要懂得有關(guān)復數(shù)的理論知識,不過,如果理解了實數(shù)離散傅立葉變換(real DFT),再去理解復數(shù)傅立葉變換就更容易了,所以我們先把復數(shù)的傅立葉變換放到一邊去,先來理解實數(shù)傅立葉變換,在后面我們會先講講關(guān)于復數(shù)的基本理論,然后在理解了實數(shù)傅立葉變換的基礎(chǔ)上再來理解復數(shù)傅立葉變換。所以本文后面的重點是理解實數(shù)離散傅立葉變換(real DFT)。

截止到這里,我們簡單闡述了傅里葉變換的一些基礎(chǔ)知識和思想。后面,我們將從相對簡單的實數(shù)傅里葉變換出發(fā),試著去理解它。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

實數(shù)離散傅立葉變換(real DFT)


首先,先來看一個關(guān)于實數(shù)離散傅立葉變換(Real DFT)的例子     

通過這個例子,是想引出實數(shù)離散傅里葉變換在數(shù)學或者說程序中的表達方法,并且如果能理解實數(shù)離散傅里葉變換的原理就更好了

下圖是一個實數(shù)原始離散信號圖像:


       這個信號的長度是16,于是可以把這個信號分解9個余弦波和9個正弦波(一個長度為N的信號可以分解成N/2+1個正余弦信號,這是為什么呢?我們稍后再討論,也許結(jié)合下圖你就能已經(jīng)看出其中的原因。參看最后面的
證明1

結(jié)合下面的18個正余弦圖,我想從計算機處理精度上就不難理解,一個長度為N的信號,最多只能有N/2+1個不同頻率,再多的頻率就超過了計算機所能所處理的精度范圍),如下圖:

        9個余弦信號:

從左至右,從上到下,分別對應(yīng)著頻率k=0~8;

頻率k=i就代表在長度為N的區(qū)間上存在著i個周期。k越大,周期越小。

        9個正弦信號:

同樣的,從左至右,從上到下,分別對應(yīng)著頻率k=0~8;

       把以上所有信號相加即可得到原始信號,至于是怎么分別變換出9種不同頻率信號的,我們也先不急,后面會說到,先看看對于以上的變換結(jié)果,在程序中又是該怎么表示的,我們可以看看下面這個示例圖:


  上圖中左邊表示時域中的信號,右邊是頻域信號表示方法,
從左向右,-->,表示正向轉(zhuǎn)換(Forward DFT),從右向左,<--,表示逆向轉(zhuǎn)換(Inverse DFT),
用小寫x[]表示信號在每個時間點上的幅度值數(shù)組, 用大寫X[]表示每種頻率的幅度值數(shù)組(即時間x-->頻率X), 
因為變換到頻率域后有N/2+1種頻率,需要記錄N/2+1個幅值,所以該數(shù)組長度為N/2+1

X[]數(shù)組又分兩種,一種是表示余弦波的不同頻率幅度值:Re X[],另一種是表示正弦波的不同頻率幅度值:Im X[]。

其中,Re是實數(shù)(Real)的意思,Im是虛數(shù)(Imagine)的意思,采用復數(shù)的表示方法把正余弦波組合起來進行表示,但這里我們不考慮復數(shù)的其它作用,只記住是一種組合方法而已,目的是為了便于表達(個人感覺這樣表示是因為更為普遍和常用的復數(shù)形式傅里葉變換的存在,為了在形式上契合它)。還有,在后面我們會知道,復數(shù)形式的傅立葉變換頻率域數(shù)組長度是N,而不是N/2+1。

到此,實數(shù)形式的離散傅里葉變換的表示方法及符號約定我們已經(jīng)說清楚了,并且變換所做的實際工作我們也心里有數(shù)了?,F(xiàn)在,補充上面欠著的關(guān)于“一個長度為N的信號可以分解成N/2+1個正余弦信號”的證明1。

這個問題解決了,不過到這里不知道有沒有人和我有同樣的疑問。為什么變換后的正弦余弦分量的頻率取值都正好是整數(shù)?這個問題將在下面的學習中自然而然的明白。


實數(shù)形式離散傅里葉正變換(DFT)

    由上面的討論我們知道DFT是要將時域長度為N的離散序列x(n)變換為不同頻率取值的正余弦分量,且頻率K取值為0~N/2+1。其實我們正變換要做的是已知時域序列x(n),求頻率域上的幅度值數(shù)組,也就是ReX[] 和ImX[]。

有三種完全不同的方法進行DFT:一種方法是通過聯(lián)立方程進行求解, 從代數(shù)的角度看,要從N個已知值求N個未知值,需要N個聯(lián)立方程,且N個聯(lián)立方程必須是線性獨立的,但這是這種方法計算量非常的大且極其復雜,所以很少被采用;第二種方法是利用信號的相關(guān)性(correlation)進行計算,這個是我們后面將要介紹的方法;第三種方法是快速傅立葉變換(FFT),這是一個非常具有創(chuàng)造性和革命性的的方法,因為它大大提高了運算速度,使得傅立葉變換能夠在計算機中被廣泛應(yīng)用,但這種算法是根據(jù)復數(shù)形式的傅立葉變換來實現(xiàn)的,它把N個點的信號分解成長度為N的頻域,這個跟我們現(xiàn)在所進行的實域DFT變換不一樣,而且這種方法也較難理解,這里我們先不去理解,等先理解了復數(shù)DFT后,再來看一下FFT。有一點很重要,那就是這三種方法所得的變換結(jié)果是一樣的,經(jīng)過實踐證明,當頻域長度為32時,利用相關(guān)性方法進行計算效率最好,否則FFT算法效率較高。現(xiàn)在就讓我們來看一下相關(guān)性算法。--July
 
利用第一種方法、信號的相關(guān)性(correlation)可以從噪聲背景中檢測出已知的信號,我們也可以利用這個方法檢測信號波中是否含有某個頻率的信號波:把一個待檢測信號波乘以另一個信號波,得到一個新的信號波,再把這個新的信號波所有的點進行相加,從相加的結(jié)果就可以判斷出這兩個信號的相似程度。如下圖:

        上面a和 b兩個圖是待檢測信號波,圖a很明顯可以看出是個3個周期的正弦信號波,圖b的信號波則看不出是否含有正弦或余弦信號,圖c和d都是個3個周期的正弦信號波,圖e和f分別是a、b兩圖跟c、d兩圖相乘后的結(jié)果,圖e所有點的平均值是0.5,說明信號a含有振幅為1的正弦信號c,但圖f所有點的平均值是0,則說明信號b不含有信號d。這個就是通過信號相關(guān)性來檢測是否含有某個信號的方法。
 
       第二種方法:相應(yīng)地,我也可以通過把輸入信號和每一種頻率的正余弦信號進行相乘(關(guān)聯(lián)操作),從而得到原始信號與每種頻率的關(guān)聯(lián)程度(即總和大?。?,這個結(jié)果便是我們所要的傅立葉變換結(jié)果,下面兩個等式便是我們所要的計算方法:

       第二個式子中加了個負號,是為了保持復數(shù)形式的一致,前面我們知道在計算時又加了個負號,所以這只是個形式的問題,并沒有實際意義,你也可以把負號去掉,并在計算時也不加負號。

       這里有一點必須明白一個正交的概念:兩個函數(shù)相乘,如果結(jié)果中的每個點的總和為0,則可認為這兩個函數(shù)為正交函數(shù)。要確保關(guān)聯(lián)性算法是正確的,則必須使得跟原始信號相乘的信號的函數(shù)形式是正交的,我們知道所有的正弦或余弦函數(shù)是正交的,這一點我們可以通過簡單的高數(shù)知識就可以證明它,所以我們可以通過關(guān)聯(lián)的方法把原始信號分離出正余弦信號。也就是說,一個帶有多個頻率分量的時域函數(shù)f(t)乘以某個頻率的正交基的積分,其實就等于函數(shù)中對應(yīng)這個頻率的分量與這個頻率正交基的積分,也就求出了函數(shù)與這個頻率的“關(guān)聯(lián)度”。當然,其它的正交函數(shù)也是存在的,如:方波、三角波等形式的脈沖信號,所以原始信號也可被分解成這些信號,但這只是說可以這樣做,卻是沒有用的。


實數(shù)形式離散傅里葉逆變換——合成運算方法(Real Inverse DFT) 

DFT合成等式(合成原始時間信號,頻率-->時間,逆向變換):

如果有學過傅立葉級數(shù),對這個等式就會有似曾相識的感覺,不錯!這個等式跟傅立葉級數(shù)是非常相似的:

        當然,差別是肯定是存在的,因為這兩個等式是在兩個不同條件下運用的,至于怎么證明DFT合成公式,這個我想需要非常強的高等數(shù)學理論知識了,這是研究數(shù)學的人的工作,對于普通應(yīng)用者就不需要如此的追根究底了,但是傅立葉級數(shù)是好理解的,我們起碼可以從傅立葉級數(shù)公式中看出DFT合成公式的合理性。                          
       DFT合成等式中的Im X[k]和Re X[k]跟之前提到的Im X[k]和Re X[k]是不一樣的,下面是轉(zhuǎn)換方法(關(guān)于此公式的解釋,見下文):

       
       但k等于0和N/2時,實數(shù)部分的計算要用下面的等式:

              
       上面四個式中的N是時域中點的總數(shù),k是從0到N/2的序號。
       為什么要這樣進行轉(zhuǎn)換呢?這個可以從頻譜密度(spectral density)得到理解,如下圖就是個頻譜圖:

       
       這是一個頻譜圖,橫坐標表示頻率大小,縱坐標表示振幅大小,原始信號長度為N(這里是32),經(jīng)DFT轉(zhuǎn)換后得到的17個頻率的頻譜,頻譜密度表示每單位帶寬中為多大的振幅,那么帶寬是怎么計算出來的呢?看上圖,除了頭尾兩個,其余點的所占的寬度是2/N,這個寬度便是每個點的帶寬,頭尾兩個點的帶寬是1/N,而Im X[k]和Re X[k]表示的是頻譜密度,即每一個單位帶寬的振幅大小,但表示2/N(或1/N)帶寬的振幅大小,所以分別應(yīng)當是Im X[k]和Re X[k]的2/N(或1/N)。
 
頻譜密度就象物理中物質(zhì)密度,原始信號中的每一個點就象是一個混合物,這個混合物是由不同密度的物質(zhì)組成的,混合物中含有的每種物質(zhì)的質(zhì)量是一樣的,除了最大和最小兩個密度的物質(zhì)外,這樣我們只要把每種物質(zhì)的密度加起來就可以得到該混合物的密度了,又該混合物的質(zhì)量是單位質(zhì)量,所以得到的密度值跟該混合物的質(zhì)量值是一樣的。--dznlong
 
       至于為什么虛數(shù)部分是負數(shù),這是為了跟復數(shù)DFT保持一致,這個我們將在后面會知道這是數(shù)學計算上的需要(Im X[k]在計算時就已經(jīng)加上了一個負號(稍后,由下文,便可知),再加上負號,結(jié)果便是正的,等于沒有變化)。
 
       如果已經(jīng)得到了DFT結(jié)果,這時要進行逆轉(zhuǎn)換,即合成原始信號,則可按如下步驟進行轉(zhuǎn)換:
1、先根據(jù)上面四個式子計算得出的值;
2、再根據(jù)DFT合成等式得到原始信號數(shù)據(jù)。


 到此為止,我們對傅立葉變換便有了感性的認識了。但是,這只是在實域上的離散傅立葉變換,其中雖然也用到了復數(shù)的形式,但那只是個替代的形式,并無實際意義,現(xiàn)實中一般使用的是復數(shù)形式的離散傅立葉變換,且快速傅立葉變換是根據(jù)復數(shù)離散傅立葉變換來設(shè)計算法的。隨著作者之后的學習,再總結(jié)出后面的博文。




    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多