日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

图说Fourier变换

發布時間:2023/12/15 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图说Fourier变换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

傅里葉變換是傅里葉發現的,說起傅里葉這位大佬,他是一位研究熱能的科學家,在研究熱傳導的時候發現了傅里葉變換,但傅里葉變換不僅只應用于熱能,在聲學,光學,電子學中也有廣泛的應用.

傅里葉老先生的原話是:

"any function of a variable,whether continuous or discontinuous, can be expanded in a series of sines of multiples of the variable."

這樣講比較抽象,如果具體到場景,以音頻為例,可以說成:

"any sound can be broken down into a series of sine waves? at many differenct frequencies"

這樣是不是好理解多了?雖然傅里葉變換是傅里葉的發現,但是傅里葉變換的思想可以追溯到古希臘對天文學的研究,古希臘天文學家認為宇宙的結構分成本輪和均輪,地球在宇宙中心,天體在不同的位置繞地球運轉,但天體并不是位于以地球為圓心的軌道上,而是在其稱為本輪的軌道上勻速轉動,本輪的中心在以地球為中心的軌道(均輪)上勻速轉動,由于天體在本輪與均輪上運動的組合,造成天體到地球的距離是變化的。這種結構可以解釋很多天文現象。

結構是不是和上面的動圖很像?佩服古人的想象力吧。

理論分析和作圖實踐

如同泰勒級數一樣,Fourier級數是一種特殊形式的函數展開,一個函數按照泰勒級數展開時,基底函數取

而一個函數按傅里葉級數展開時,基底函數取

它們構成無窮維的空間,這些無窮維空間的表示多是完備的,也就是缺少任何一個都不可以。最常遇到的函數在它的定義域內每一點都可以展開成冪級數,而傅里葉展開則需要一些條件。

與泰勒級數不同的是,在傅里葉級數中,任意兩個不同的基底函數在

上是正交的.也就是:

?

這里,基底函數的正交性對一個函數的傅里葉展開是至關重要的,傅里葉級數是一種很自然的函數展開形式,不但能夠解決某些數學上的經典問題,而且是描述許多重要物理現象的基礎,如力學,聲學,電子學以及信號分析,控制科學等.

一個傅里葉級數在一般情況下表示為:

其中,和是展開系數.假定一個周期為的函數

能按上式展開,之所以假定周期為是為了計算方便,因為周期為的函數,角速度為:

這樣,展開后的各次諧波可以寫成

的形式.當然定義周期非也可以,只是推到過程中函數形式上會復雜一些,這里為了方便計算,定義周期為.

所以,傅里葉級數可以看成一些列周期為

的三角波的疊加。

即便, 最終積分的時候,根據積化和差公式,得到包含

,,,

的項,它們的角頻率都是一次諧波的整數倍,也就是說,周期都可以被一次諧波整除,而積分范圍是一次諧波的一個周期范圍,必定包含整數個高次諧波的波形,而三角波再周期范圍內積分為0,所以,積分結果也必定為0.

現在計算其中的展開系數.

對上式兩邊在范圍進行積分,并利用正交性:

所以:

所以是函數在區間的平均值,為了計算系數,按照同樣的套路,對兩邊同乘以,然后在范圍積分,并利用正交性,得到:

所以:

類似,對前式兩邊同乘以,積分后得到:

Notes: 上面計算過程的積分范圍是,其實也可以選擇,計算結果系數表達式不變,只是將積分范圍變為,事實上,由于被積分的函數是以為周期的,積分范圍可以選擇任意一個寬度為的區間.

傅里葉變換的本質是內積,內積的本質是投影,三角函數的特殊性在于,它是一個完備的正交函數集,不同頻率的三角函數之間的內積為0,也就是垂直,正交,或者毫不相關,只有頻率相同的三角函數,內積才不是0(很顯然,自身到自身的投影,長度一定不為0, 除非自身就是0).從這個角度看,我們求得的傅里葉系數只是再不同的函數上的投影坐標。

綜上,得到傅里葉系數:

假如被積函數有周期,則積分區間可以用任意一個寬度為的區間代替,例如.,因為無論區間怎樣取,周期內積分必定相等.

從純數學的角度講,上面的過程是使用三角函數逼近周期函數的過程,如果在頻率增加時,fourier系數快速收斂為0,則信號表現是光滑的,如果在頻率較大的時候,有一些系數仍然無法收斂,則圖形會變成有高頻噪聲的情況,可以使用低通濾波對頻率進行過濾,得到低頻部分.

法國數學家傅里葉在提出傅里葉級數時認為,任何一個周期信號都可以展開成傅里葉級數,后來發現還要加上一些條件,不過這些條件非常的弱,之后經過進一步補充,只有在滿足狄利克雷條件時,周期信號才能夠被展開成傅里葉級數。其中,狄利克雷條件的定義如下:

  • 在一周期內,連續或只有有限個第一類間斷點.(如果是函數 ?的間斷點,且左極限及右極限都存在,滿足這些條件的間斷點成為第一類間斷點).
  • 在一周期內,極大值和極小值的數目應是有限個,翻譯過來就是,分段單調,單調區間的個數有限.
  • 在一周期內,信號是絕對可積的。
  • 這三個條件是充分條件,但不是必要條件,也就是說,存在一些函數有傅里葉展開,但是卻不一定滿足上面這三條,但是對于滿足上面三條的函數,一定可以進行傅里葉級數展開.

    關于間斷點的分類,見下圖:

    收斂情況,在的連續點,傅里葉級數收斂于:

    但是在的間斷點,收斂于:

    其中和是在處的左極限和右極限,這里的含義是,如果將函數按照傅里葉級數展開,這個傅里葉級數再原函數的一個連續點收斂于對應連續點的值,但是在原函數的一個間斷點,則收斂于這個間斷點左右極限的算數平均值.

    這也側面反應,左右極限存在是傅里葉變換可以進行的必要條件.

    另外,根據條件1和條件3,也可以得出,?隨著系數增大,逐漸趨于0的事實,這也說明傅里葉變換后,高頻分量能量趨近于零,可以忽略。

    現在我們證明一下:

    根據條件1和3,f(x)滿足絕對可積,只有有限個第一類間斷點,則可以得到f(x)函數在周期內一定有界,包括上界和下界,所以下式一定成立:

    一定成立

    所以

    后面還會看到傅里葉級數的復指數形式也有一個系數,它的系數表示為:

    模表示單位圓的半徑幅度:

    可以看到,隨著,傅里葉變換復指數形式的系數表示環繞圓半徑也是逐漸減小的。

    所以,?隨著系數增大,絕對值逐漸趨于0的判斷成立,幾何化表示就是,頻域圓圈套圓圈,后面的圓圈越來越小。

    傅里葉級數的復數形式推導:

    根據歐拉公式:

    所以

    所以:

    由于

    所以

    注意這里是而不是,所以固定的是上式的結論.

    所以:

    所以:

    這里做一下變量代換,用表示,用表示,其中

    也就是新的公式里面的

    所以,上面的式子化為:

    對于復數代數表達和自然指數表達之間的聯系,做如下推導:

    如下圖:

    所以:

    其中,

    所以,最終傅里葉級數變換和反變換為:

    前面說的三角函數是一組正交函數,實際上,也是一組正交函數,并且是完備的,定義為:

    上式的一居室柯西積分定理,解析函數沿著任意封閉曲線(內部不包括奇點)的積分值為0

    對于傅里葉積分的形式,是不是很像?

    實際上,傅里葉級數當時的極限就是傅里葉積分。

    區別就在于因子放在哪里,實際上這個差別是有原因的,這里由于假定周期是,所以因子實際上是.,傅里葉變換的時候,,,這樣會導致幅度譜趨近于0,很難畫出來表示不同頻率分量的強度差異。這樣,將乘以,則轉化為頻率密度譜,也就是在連續頻率情況下,單位頻率內,有多少“幅度”,這就像是算單位體積內物體的質量一樣,這樣,傅里葉級數就成了傅里葉變換。

    簡單應用,對于函數:

    其復指數形式的傅里葉變換是:

    所以:

    ,其余都為0;

    所以:

    所以:


    對于方波來說:

    ?對于方波,后面有求得

    而且:

    所以,上面兩個方法推推導出了同樣的結果.

    可以類比連續情況下的fourier 變換:

    下面的公式來源于數學物理方法,本質是周期無限大時候的fourier級數.

    所以,自然而然,中括號的內容獨立出來,推導出傅里葉積分形式:

    所以:

    可見,正向推導和反向推到都成功了。

    根據復數域公式,傅里葉變換可以看成是一個個的角頻率不同的圓()的運動的疊加,當n>0時,是逆時針旋轉的圓,當n<0時,是順時針旋轉的圓,n==0的時候,表示直流平均分量,不旋轉。 不管旋轉方向是什么,同意時刻它們的實部投影是時域上的值,虛部投影是0.(上面的式子可以看到大于零和小于零情況下,相同角頻率的兩個圓它們的相位相反,而角頻率相同的情況下,任何時刻互為共軛,虛部矢量和為0,所以只有實世界的分量,也就是時域分量).


    1.函數在一個周期內的解析式為:

    ?

    周期函數下圖所示:

    所以:

    所以:

    同理:

    所以:

    所以

    所以

    綜合上面的推導,得出傅里葉系數分別為:

    octave計算各次的系數分別為:

    得到包括六次諧波的函數表達式為:

    其圖形是下圖,可以看到,基本上與原函數重合,這也說明上面的積分過程是正確的。

    octave計算過程:

    \frac{2}{n\pi}(1-cos(n\pi))


    下面用python繪制一幅精確點的圖形,下面的圖形包含10000個諧波,可以看到,已經非常逼近原函數圖形了。

    # -*- coding: utf-8 -*- """ Created on Mon Feb 1 13:57:21 2021@author: czl """ from pylab import * x = mgrid[-20:20:0.01]def fourier_wave():a0 = (1-exp(-pi))/(2*pi)+1/2s=a0for n in range(1,10000,1):s0 = ((1-(-1)**n*exp(-pi))/(pi*(1+n**2))*cos(n*x)+((n*exp(-pi)*(-1)**n-n)/(pi*(1+n**2))+((-1)**(n+1)+1)/(n*pi))*sin(n*x))s=s+s0plot(x,s,'orange',linewidth=0.6)title('fourier_transform')show() fourier_wave()

    2.方波:

    ??

    所以:

    所以:

    geogebra函數圖形:

    # -*- coding: utf-8 -*- """ Created on Mon Feb 1 13:57:21 2021@author: czl """ from pylab import * x = mgrid[-20:20:0.01]def fourier_wave():a0 = 0s=a0for n in range(0,1000,1):s0 = 4/((2*n+1)*pi)*sin((2*n+1)*x)s=s+s0plot(x,s,'orange',linewidth=0.6)title('fourier_transform')show() fourier_wave()

    得到如下圖像:


    3.另一類型的方波

    所以

    所以:

    對比前圖,這里的表達式表示沿著橫軸左移角度,和前圖的解析式形式完全一致.

    geogebra驗證:

    n=17次的諧波是上圖的樣子.

    python驗證:

    # -*- coding: utf-8 -*- """ Created on Mon Feb 1 13:57:21 2021 @author: czl """ from pylab import * x = mgrid[-20:20:0.01]def fourier_wave():a0 = 0s=a0for n in range(0,100,1):s0 = ((-1)**n*4)/((2*n+1)*pi)*cos((2*n+1)*x)s=s+s0plot(x,s,'orange',linewidth=0.6)title('fourier_transform')show() fourier_wave()

    python繪制的圖像:


    函數4:

    所以:

    geogebra圖像為:

    python圖像:

    # -*- coding: utf-8 -*- """ Created on Mon Feb 1 13:57:21 2021 @author: czl """ from pylab import * x = mgrid[-20:20:0.01]def fourier_wave():a0 = 1/2s=a0for n in range(0,100,1):s0 = 2/(pi*(2*n+1))*sin((2*n+1)*x)s=s+s0plot(x,s,'orange',linewidth=0.6)title('fourier_transform')show() fourier_wave()

    函數5:

    geogebra圖形:yu

    python圖形:

    # -*- coding: utf-8 -*- """ Created on Mon Feb 1 13:57:21 2021 @author: czl """ from pylab import * x = mgrid[-20:20:0.01]def fourier_wave():a0 = 1/2s=a0for n in range(0,100,1):s0 = ((-1)**n*2)/((2*n+1)*pi)*cos((2*n+1)*x)s=s+s0plot(x,s,'orange',linewidth=0.6)title('fourier_transform')show() fourier_wave()


    鋸齒函數的傅里葉變換:

    于是:

    geogebra圖形為:

    python圖形為:

    驗證,在,收斂于

    但是在連續點,收斂于級數

    python繪圖代碼為:

    # -*- coding: utf-8 -*- """ Created on Mon Feb 1 13:57:21 2021 @author: czl """ from pylab import * x = mgrid[-20:20:0.01]def fourier_wave():a0 = 0s=a0for n in range(1,100,1):s0 = sin(n*x)/ns=s+s0plot(x,s,'orange',linewidth=0.6)title('fourier_transform')show() fourier_wave()

    函數:

    \

    python繪圖:

    # -*- coding: utf-8 -*- """ Created on Mon Feb 1 13:57:21 2021 @author: czl """ from pylab import * x = mgrid[-20:20:0.01]def fourier_wave():a0 = (pi**2)/3s=a0for n in range(1,300,1):s0 = ((-1)**n)*(4/(n**2))*cos(n*(x))s=s+s0plot(x,s,'orange',linewidth=0.6)title('fourier_transform' )show() fourier_wave()

    geogebra繪圖:

    對于

    python制圖:

    python 代碼:

    # -*- coding: utf-8 -*- """ Created on Mon Feb 1 13:57:21 2021 @author: czl """ from pylab import * x = mgrid[-20:20:0.01]def fourier_wave():a0 = -(pi**2)/3s=a0for n in range(1,300,1):s0 = ((-1)**(n+1))*(4/(n**2))*cos(n*(x))s=s+s0plot(x,s,'orange',linewidth=0.6)title('fourier_transform' )show() fourier_wave()

    三角波的傅里葉變換:

    求解錯誤,實際上由于奇函數在原點對稱區間求積分,

    python圖形:

    python代碼:

    # -*- coding: utf-8 -*- """ Created on Mon Feb 1 13:57:21 2021 @author: czl """ from pylab import * x = mgrid[-20:20:0.01]def fourier_wave():a0 = pi/2s=a0for n in range(1,100,1):s0 = ((2/((n**2)*pi)) * ((-1)**n -1))*cos(n*x)s=s+s0plot(x,s,'orange',linewidth=0.6)title('fourier_transform')show() fourier_wave()


    相位變化后的三角波

    hanshu

    python繪圖:

    代碼:

    # -*- coding: utf-8 -*- """ Created on Mon Feb 1 13:57:21 2021 @author: czl """ from pylab import * x = mgrid[-20:20:0.01]def fourier_wave():a0 = pi/2s=a0for n in range(1,100,1):s0 = -((2/((n**2)*pi)) * ((-1)**n -1))*cos(n*x)s=s+s0plot(x,s,'orange',linewidth=0.6)title('fourier_transform')show() fourier_wave()

    占空比不為1/2的方波:

    python代碼:

    # -*- coding: utf-8 -*- """ Created on Mon Feb 1 13:57:21 2021 @author: czl """ from pylab import * x = mgrid[-20:20:0.01]def fourier_wave():a0 = 1/2s=a0for n in range(1,1000,1):if (n%4 == 0):an = 0bn = 0elif (n%4 == 1):an = 2/(n*pi)bn = 2/(n*pi)elif (n%4 == 2):an = 0bn = -4/(n*pi)elif (n%4 == 3):an = -2/(n*pi)bn = 2/(n*pi)s0 = an*cos(n*x)+bn*sin(n*x)s=s+s0plot(x,s,'orange',linewidth=0.6)title('fourier_transform')show() fourier_wave()

    geogebra繪圖結果:

    別看這個函數簡單,但它妹的收斂速度太慢,9次諧波繪制才是上圖的屎樣,實在繪不下去了,還好python繪制的圖能夠說明并且保證積分過程是無誤的。


    函數:

    python繪制的圖形為:

    ??

    python代碼:

    # -*- coding: utf-8 -*- """ Created on Mon Feb 1 13:57:21 2021@author: czl """ from pylab import * x = mgrid[-10:10:0.01]def fourier_wave():a0 = 2/pis=a0for n in range(1,1000,1):s0 = -4/pi * (1/(4*(n**2) -1))*cos((2*n)*x)s=s+s0plot(x,s,'orange',linewidth=0.6)title('fourier_transform')show() fourier_wave()

    奇異周期函數:

    積分沒有問題,但發現ubuntu上用python2.7繪制的圖形還不太精確,但是windows10上的anaconda則沒有問題,網上說是由于廣為人知的phthon2.7浮點BUG導致:??

    ubuntu平臺繪制:

    anaconda繪制:

    python代碼:

    # -*- coding: utf-8 -*- """ Created on Mon Feb 1 13:57:21 2021 @author: czl """ from pylab import * x = mgrid[-20:20:0.01]def fourier_wave():a0 = (1/2)*((pi/2)+(pi**2)/3)s=a0for n in range(1,1000,1):bn = (1/(n*pi))*(pi*((-1)**n) -(pi**2)*((-1)**n) + (2*((-1)**n-1))/(n**2))an = (((-1)**n - 1) + 2*pi*((-1)**n))/((n**2)*pi)s0 = an*cos(n*x)+bn*sin(n*x)s=s+s0plot(x,s,'orange',linewidth=0.6)title('fourier_transform')show() fourier_wave()

    圖象

    geogebra圖象:

    代碼:

    # -*- coding: utf-8 -*- """ Created on Mon Feb 1 13:57:21 2021 @author: czl """ from pylab import *x = mgrid[-20:20:0.01]def fourier_wave():a0 = (1/(2*pi))*(exp(pi)-1+(pi**3)/3)s=a0for n in range(1,1000,1):bn = (1/(pi))*(((n*exp(pi)*(-1)**n)-n)/(n**2+1)+((2-n**2*pi**2)*(-1)**n - 2)/(n**3))an = (1/(pi))*(((exp(pi)*(-1)**n)-1)/(n**2+1)+(2*n*pi*(-1)**n)/(n**3))s0 = an*cos(n*x)+bn*sin(n*x)s=s+s0plot(x,s,'orange',linewidth=0.6)title('fourier_transform')show() fourier_wave()

    ?圖像:


    python代碼:

    # -*- coding: utf-8 -*- """ Created on Mon Feb 1 13:57:21 2021 @author: czl """ from pylab import *x = mgrid[-20:20:0.01]def fourier_wave():a0 = 61/60s=a0for n in range(1,1000,1):bn = (1/(pi))*( (((-0.8)*(-cos(n*(-pi/3))) - (-0.8)*(-cos(n*(-pi))))/n) +(((-0.4)*(-cos(n*(-pi/6))) - (-0.4)*(-cos(n*(-pi/3))))/n) + (((-0.2)*(-cos(n*(0))) - (-0.2)*(-cos(n*(-pi/6))))/n)+ (((3)*(-cos(n*(5*pi)/6)) - (3)*(-cos(n*(0))))/n) + (((1)*(-cos(n*(pi))) - (1)*(-cos(n*(5*pi)/6)))/n))an = (1/(pi))*( (((-0.8)*(sin(n*(-pi/3))) - (-0.8)*(sin(n*(-pi))))/n) +(((-0.4)*(sin(n*(-pi/6))) - (-0.4)*(sin(n*(-pi/3))))/n) + (((-0.2)*(sin(n*(0))) - (-0.2)*(sin(n*(-pi/6))))/n)+ (((3)*(sin(n*(5*pi)/6)) - (3)*(sin(n*(0))))/n) + (((1)*(sin(n*(pi))) - (1)*(sin(n*(5*pi)/6)))/n))s0 = an*cos(n*x)+bn*sin(n*x)s=s+s0plot(x,s,'orange',linewidth=0.6)title('fourier_transform')show() fourier_wave()

    圖像:


    前面的周期均為的周期函數,現在用一個周期為的函數,看有什么不同.

    周期為,則基波的角速度.

    函數圖形:

    圖像:

    代碼:

    # -*- coding: utf-8 -*- """ Created on Mon Feb 1 13:57:21 2021 @author: czl """ from pylab import *x = mgrid[-5:5:0.01]def fourier_wave():a0 = 0s=a0for n in range(1,1000,1):an=(1/(n*pi))*(sin(2*n*pi/4) - sin(-2*n*pi/4)) - (1/(n*pi))*(sin(2*n*3*pi/4) - sin(2*n*pi/4)) bn=0s0 = an*cos(2*n*x)+bn*sin(2*n*x)s=s+s0plot(x,s,'orange',linewidth=0.6)title('fourier_transform')show() fourier_wave()

    參數信息:

    geogebra圖像是:


    也是,完美符合!

    實踐證明,迪利克雷條件真是比較寬松的條件,寬松到,幾乎可以做出論斷,但凡周期函數,皆可傅里葉!

    最后,以幾張圖結尾,下圖是方波在各次1-17諧波時候的圖形,最高次是紅色代表17次諧波圖形,,也是最接近方波的。

    ?單獨看17次諧波的結果:

    鋸齒波的傅里葉變換直觀圖,最高次8次諧波。

    第八次諧波的情況:

    下面這幅圖很有意思,它說明同樣角度的正弦和余弦級數多項式和圖形并不一定相似:


    傅里葉變換為我們提供了一個全新的觀察世界的角度,站在頻域看世界,世界是靜止的,因為只有一組不變的頻率擺在那里。 我們的世界有著統一而優美的運行機制,這使我想到,在現實生活中看到的紛繁復雜的現象,有沒有可能是存在于高維空間中的同一個事物的不同側面在這個世界的投影。大道至簡,或許從高維看世界,世界不再是一地的碎片,而是一體多面,在至高的維度,隱藏著一切問題的答案。想象一下,世界上每一個看似混亂的表象,背后實際上都是一條時間軸上按照或有或無的規則變化的曲線,這些曲線都是由無窮無盡的正弦波疊加而成。這些看似不規則的變化,內蘊的竟然是規則的正弦波在時間上的投影,那么你的腦海中會產生一個什么畫面呢?

    我們眼中的世界就像是皮影戲的大屏幕,幕后面有無數的齒輪,大齒輪帶動小齒輪,小齒輪帶動更小的,在最外面的齒輪上有一個小人投影到屏幕上,那就是我們看到的,我們知道這個小人在按照有或者無的規律表演,卻看不透它背后的驅動機制。

    這個小人會思考嗎?它會是我們嗎? 真的有自由意志嗎?還是一切皆宿命?

    結束!

    總結

    以上是生活随笔為你收集整理的图说Fourier变换的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。