色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

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

凡億PCB ? 來源:CSDN技術社區(qū) ? 作者:卓晴 ? 2022-07-10 09:07 ? 次閱讀
d38c4b00-ff16-11ec-ba43-dac502259ad0.gif


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

01Python算法

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

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算法中的循環(huán)部分都替換成關于數組的操作, 使得實際運算速度得到提高。

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算法計算結果。

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

02它語言FFT

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

2.1 Fortran FFT算法

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

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

  • 第一個階段實現了對輸入數據進行倒讀順序排列;
  • 第二階段利用三重循環(huán)實現了分組蝶形運算。

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

d3c0ccd6-ff16-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;i1;
n|=(x&1);
x>>=1;
}
returnn;
}
constdoublePI=3.1415926536;
template<classIter_T>
voidfft(Iter_Ta,Iter_Tb,intlog2n){
typedeftypenameiterator_traits<iter_t>::value_typecomplex;
constcomplexJ(0,1);
intn=1<for(unsignedinti=0;ifor(ints=1;s<=?log2n;?++s)??{
????????int?m?=?1<>1;
complexw(1,0);
complexwm=exp(-J*(PI/m2));
for(intj=0;jfor(intk=j;k

?結 ※

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

審核編輯:湯梓紅

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

    關注

    23

    文章

    4646

    瀏覽量

    93714
  • FFT
    FFT
    +關注

    關注

    15

    文章

    438

    瀏覽量

    59819
  • python
    +關注

    關注

    56

    文章

    4813

    瀏覽量

    85302
  • 傅里葉變換
    +關注

    關注

    6

    文章

    442

    瀏覽量

    42794

原文標題:優(yōu)雅的FFT算法

文章出處:【微信號:FANYPCB,微信公眾號:凡億PCB】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

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

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

    C語言實現FFT(快速傅里葉變換)

    C語言實現FFT(快速傅里葉變換)
    發(fā)表于 10-25 21:33

    FFT快速傅里葉變換

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

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

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

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

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

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

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

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

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

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

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

    快速傅里葉變換C語言實現

    快速傅里葉變換C語言實現 模擬采樣進行頻譜分析FFT是DFT的快速算法用于分析確定信號(時間連續(xù)可積信號、不一定是周期信號)的頻率(或相位、
    發(fā)表于 07-20 06:01

    FFT快速傅里葉變換)運算器電路圖

    FFT快速傅里葉變換)運算器電路圖
    發(fā)表于 07-16 11:49 ?4693次閱讀
    <b class='flag-5'>FFT</b>(<b class='flag-5'>快速</b><b class='flag-5'>傅里葉變換</b>)運算器電路圖

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

    快速傅里葉變換 FFT 是離散傅里葉變換 DFT 的一種快速算法,只有 FFT 才能在現實中有實
    發(fā)表于 01-15 16:24 ?0次下載

    快速傅里葉變換FFT的C程序代碼實現

    本文為您講解快速傅里葉變換FFT的C語言程序代碼實現的具體方法,C編程需要解決的問題及FFT計算結果驗證。
    發(fā)表于 10-08 16:38 ?6.1w次閱讀
    <b class='flag-5'>快速</b><b class='flag-5'>傅里葉變換</b><b class='flag-5'>FFT</b>的C程序代碼<b class='flag-5'>實現</b>

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

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

    利用快速傅里葉變換計算相關面

      快速傅里葉變換 (fast Fourier transform),即利用計算機計算離散傅里葉變換(DFT)的高效、快速計算方法的統(tǒng)稱,簡
    發(fā)表于 11-27 16:23 ?1684次閱讀

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

    利用FFT算法實現快速傅里葉變換, 在理論、工程中具有非常廣泛的應用。除了能夠在合適的計算平臺完
    的頭像 發(fā)表于 07-04 14:36 ?4055次閱讀
    主站蜘蛛池模板: 中文无码不卡的岛国片国产片 | 老师给美女同学开嫩苞 | 国产精品一区二区AV白丝在线 | 寂寞夜晚免费观看视频 | 精品第一国产综合精品蜜芽 | 怡春院院日本一区二区久久 | 性xxxx直播放免费 | 野花韩国高清完整版在线观看5 | 亚洲日产2020乱码草莓毕 | 夜夜女人国产香蕉久久精品 | 中文字幕乱偷无码AV蜜桃 | 三级黄网站 | 啪啪漫画无遮挡全彩h同人 啪啪激情婷婷久久婷婷色五月 | 99精产国品一二产区在线 | 黑色丝袜美腿美女被躁翻了 | 双性大乳浪受噗呲噗呲h总 双性被疯狂灌满精NP | 国产一及毛片 | 午夜在线观看免费完整直播网页 | 亚洲精品福利在线 | 国产av在线看的 | YY600800新视觉理论私人 | 女女破视频在线观看 | 麻豆最新免费版 | 色噜噜噜视频 | 久久深夜视频 | 91精品福利一区二区 | 精品欧美一区二区三区久久久 | 亚洲qvod图片区电影 | 第一次破女视频出血视频 | 快播理论片 | 乱叫抽搐流白浆免费视频 | 久久强奷乱码老熟女 | 亚洲国产韩国欧美在线不卡 | 国产精品久久一区二区三区蜜桃 | 幼儿交1300部一区二区 | 国产午夜电影院 | 99re久久热在线播放8 | 青青青手机视频 | 怡春院院日本一区二区久久 | 国产亚洲精品久久久久久禁果TV | 草久久久久 |