在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

傅里葉變換(FFT)的主要思想與算法

GReq_mcu168 ? 來源:TsinghuaJoking ? 作者:TsinghuaJoking ? 2022-07-04 14:36 ? 次閱讀

64ee5150-f9d2-11ec-ba43-dac502259ad0.gif

簡 介: 利用FFT算法實現快速傅里葉變換, 在理論、工程中具有非常廣泛的應用。除了能夠在合適的計算平臺完成FFT算法,同時還需要注意到它在頻譜分析中可能帶來的頻率混疊以及頻率泄露等問題。
關鍵詞 FFT算法實現

01 Python算法

??今天下午的信號與系統, 給同學們介紹了離散傅里葉變換的基本應用, 并且介紹了快速傅里葉變換(FFT)的主要思想與算法。FFT算法因其優異的性能和廣泛的應用, 堪稱信息處理領域的原子武器。實現FFT編程語言很多, 比較來比較去, 利用Python語音所描述的該算法最為簡明和優雅。

1.1 FFT算法代碼

??下面的代碼是在 The Fast Fourier Transform (FFT): Most Ingenious Algorithm Ever? 視頻中給出的 FFT 遞歸算法形式, 最大精度反映了FFT算法核心。

??這個代碼實現了DIF(時域抽取快速傅里葉變換), 利用遞歸定義,將FFT核心算法中的分而治之體現的淋漓盡致, 突出了遞歸核心中的核心思想。

defFFT(P):
n=len(P)
ifn*1:returnP

ye=FFT(P[0::2])
yo=FFT(P[1::2])

y=[0]*n
w=exp(-1j*2*pi/n)
forjinrange(n//2):
yow=w**j*array(yo)
y[j]=ye[j]+yow[j]
y[j+n//2]=ye[j]-yow[j]

returny

??利用Python語音中對于數組切片操作語法, 還可以將上面FFT算法中的循環部分都替換成關于數組的操作, 使得實際運算速度得到提高。

defFFT1(P):
n=len(P)
ifn*1:returnP

ye=FFT(P[0::2])
yo=FFT(P[1::2])

w=exp(-1j*2*pi/n)**array(list(range(n//2)))
yow=w*yo

y=[0]*n
y[:n//2]=ye+yow
y[n//2:]=ye-yow

returny

1.2 FFT 算法測試

??為了測試算法的有效性, 下面對于一個方波信號計算對應的FFT結果。

??測試算法代碼如下:

LEN=1024
oneLEN=10
p1=[1]*oneLEN+[0]*(LEN-oneLEN)

y=FFT(p1)
plt.plot(abs(array(y)),label='abs(FFT)')
plt.plot(p1,label='Data')

plt.xlabel("y")
plt.ylabel("abs(FFT(y))")
plt.grid(True)
plt.legend(loc='upperright')
plt.tight_layout()
plt.show()

??下面是測試利用Python語言實現的FFT算法計算結果。

655b9ea4-f9d2-11ec-ba43-dac502259ad0.png▲ 圖1.2.1 利用Python語音實現的FFT算法測試結果

02 其它語言FFT

??FFT算法貴在計算效率,前面使用Python實現FFT,雖然形式上優雅,但實際執行效率不高。提高執行效率,還是需要使用編譯語言。

2.1 Fortran FFT算法

??在我上大學期間所學的編程語言為Fortran, 估計現在沒有多少同學學習這個算法語言。下面給出了利用Fortran語言實現的FFT算法程序。

??算法整體上包括有兩個階段:

第一個階段實現了對輸入數據進行倒讀順序排列;

第二階段利用三重循環實現了分組蝶形運算。

??當然了,時過三十年再看Fortran感覺十分酸爽, 但它簡練語言和執行高效還是讓我們回憶起當年編程時所感覺到的快樂。

658a2e86-f9d2-11ec-ba43-dac502259ad0.png▲ 圖 Fortran 語言實現的FFT算法

2.2 C語言FFT算法

??下面是在網絡上博文 C++ Program to Compute Discrete Fourier Transform using Fast Fourier Transform Approach[1] 給出的FFT算法, 沒有對其功能進行測試。相比于前面利用Python,Fortran來看, C語言實現FFT就顯得非常啰嗦了。

#include
#include
#include
#include
usingnamespacestd;
unsignedintbitReverse(unsignedintx,intlog2n){
intn=0;
intmask=0x1;
for(inti=0;i>=1;
}
returnn;
}
constdoublePI=3.1415926536;
template
voidfft(Iter_Ta,Iter_Tb,intlog2n){
typedeftypenameiterator_traits::value_typecomplex;
constcomplexJ(0,1);
intn=1<>1;
complexw(1,0);
complexwm=exp(-J*(PI/m2));
for(intj=0;j

※ 總?結 ※

??利用FFT算法實現快速傅里葉變換, 在理論、工程中具有非常廣泛的應用。除了能夠在合適的計算平臺完成FFT算法,同時還需要注意到它在頻譜分析中可能帶來的頻率混疊以及頻率泄露等問題。

原文標題:優雅的FFT算法

文章出處:【微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。

審核編輯:彭靜

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FFT
    FFT
    +關注

    關注

    15

    文章

    437

    瀏覽量

    59562
  • 頻譜
    +關注

    關注

    7

    文章

    887

    瀏覽量

    45786
  • 代碼
    +關注

    關注

    30

    文章

    4827

    瀏覽量

    69054
  • 傅里葉變換
    +關注

    關注

    6

    文章

    442

    瀏覽量

    42710

原文標題:優雅的FFT算法

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    為什么使用傅里葉變換 FFT變換的基本原理

    1.FFT變換的基本原理 傅立葉變換是數字信號處理領域一種很重要的算法,可以將一個信號從時域變換到頻域。傅立葉原理表明:任何連續測量的時序或
    的頭像 發表于 11-09 16:52 ?1.4w次閱讀
    為什么使用<b class='flag-5'>傅里葉變換</b> <b class='flag-5'>FFT</b><b class='flag-5'>變換</b>的基本原理

    Vivado中快速傅里葉變換FFT IP的配置及應用

    快速傅里葉變換 (Fast Fourier Transform,FFT), 即利用計算機計算離散傅里葉變換(DFT)的高效、快速計算方法的統稱,簡稱FFT
    的頭像 發表于 07-20 16:46 ?4237次閱讀
    Vivado中快速<b class='flag-5'>傅里葉變換</b><b class='flag-5'>FFT</b> IP的配置及應用

    FFT快速傅里葉變換

    快速傅里葉變換FFT
    發表于 07-15 17:52

    第24章 快速傅里葉變換原理(FFT

    24.4 按時間抽選的基2-FFT算法 24.5 按頻率抽選的基2-FFT算法 24.6 總結24.1 FFT的由來 離散
    發表于 09-27 08:09

    詳解快速傅里葉變換FFT算法

    本帖最后由 richthoffen 于 2019-7-19 16:41 編輯 詳解快速傅里葉變換FFT算法
    發表于 07-18 08:07

    詳解快速傅里葉變換FFT算法

    詳解快速傅里葉變換FFT算法
    發表于 03-28 11:48

    詳解快速傅里葉變換FFT算法

    詳解快速傅里葉變換FFT算法
    發表于 05-25 09:31

    快速傅里葉變換FFT算法及其應用

    快速傅里葉變換FFT算法及其應用
    發表于 05-28 09:13

    詳解快速傅里葉變換FFT算法

    詳解快速傅里葉變換FFT算法
    發表于 03-05 11:07

    DSP變換運算-傅里葉變換

    第24章 DSP變換運算-傅里葉變換本章節開始進入此教程最重要的知識點之一傅里葉變換。關于傅里葉變換,本章主要是把傅里葉相關的基礎知識進行必
    發表于 08-03 06:14

    詳解快速傅里葉變換FFT算法

    快速傅里葉變換 FFT 是離散傅里葉變換 DFT 的一種快速算法,只有 FFT 才能在現實中有實際應 用的意義。雖然許多學過數字信號處理這
    發表于 01-15 16:24 ?0次下載

    離散傅里葉變換(DFT)及其快速算法(FFT)

    第2章-離散傅里葉變換(DFT)及其快速算法(FFT)
    發表于 12-28 14:23 ?0次下載

    經驗證的FFT變換傅里葉變換程序(C語言)

    項目中驗證可用的FFT變換傅里葉變換,C語言,帶頭文件。
    發表于 09-08 20:21 ?16次下載

    fft算法是什么_如何提高fft算法分辨率

    FFT算法(fast Fourier transform),即快速傅里葉變換,是指利用計算機計算離散傅里葉變換(DFT)的高效、快速計算方法的統稱,簡稱
    發表于 11-09 09:28 ?8615次閱讀
    <b class='flag-5'>fft</b><b class='flag-5'>算法</b>是什么_如何提高<b class='flag-5'>fft</b><b class='flag-5'>算法</b>分辨率

    利用FFT算法實現快速傅里葉變換

    簡 介: 利用FFT算法實現快速傅里葉變換, 在理論、工程中具有非常廣泛的應用。除了能夠在合適的計算平臺完成FFT算法,同時還需要注意到它在
    的頭像 發表于 07-10 09:07 ?3374次閱讀
    主站蜘蛛池模板: 国产牛仔裤系列在线观看 | 国产精品美乳在线观看 | 日韩怡红院 | 色婷婷基地 | 黄色有码视频 | 色一情一乱一乱91av | 婷婷综合五月天 | 一本到卡二卡三卡福利 | 一级特级毛片免费 | 欧美成人自拍视频 | 最新版天堂中文在线官网 | 一级一级毛片免费播放 | 一本到卡二卡三卡免费高 | 爱啪网站| 亚洲精品在线视频观看 | 美女被啪到哭网站在线观看 | 中文字幕三级久久久久久 | 久操视频在线免费观看 | 免看一级a毛片一片成人不卡 | 五月六月伊人狠狠丁香网 | 四虎影院成人 | 岬奈奈美在线 国产一区 | 最新日本免费一区二区三区中文 | 日本在线亚洲 | 成在线人视频免费视频 | 日韩卡1卡2卡三卡四卡二卡免 | 一卡二卡≡卡四卡亚洲高清 | 在线视频一二三区 | 国产成在线人视频免费视频 | 四虎伊人 | 国产成视频 | 国产成人综合自拍 | 亚洲播放 | 欧美夜夜夜 | 国产色丁香久久综合 | 天天干影视 | 五月天婷婷电影 | 欧美成人影院免费观 | 色噜噜人体337p人体 | 特级毛片视频在线 | 性做久久久久久 |