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

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

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

3天內不再提示

看完學會速傅立葉變換FFT

jf_78858299 ? 來源:ACM算法日常 ? 作者: Xiejiadong ? 2023-05-05 09:48 ? 次閱讀

FFT 即快速傅立葉變換。在很多計算機領域都用用處,例如數字圖像處理、計算機網絡。但他在算法競賽中主要是用于多項式和生成函數相關的題目。

多項式

表達方式

簡介

  • 系數表達式,即。
  • 坐標形式。每一個坐標用表示。顯然,為了能夠表示一個確定的多項式,需要個不同的坐標來表示。

比較

  • 對于系數表示,多項式加法的時間復雜度是,多項式乘法的時間復雜度是。
  • 對于點值表示,多項式加法的時間復雜度同樣是,但是乘法的時間復雜度就是(因為多項式乘法以后最高項次數為,我們只需要個坐標表示)。

思考

這樣一來,我們就有一個想法,多項式乘法,是不是可以利用坐標表示做多項式乘法特別快這點來優化算法。

于是需要解決的最大的問題就是,多項式兩種表示方法之間的互相轉換。

求值樸素做法的時間復雜度是,即隨便選取一個值帶入,暴力計算。

差值樸素的做法時間復雜度是,即根據坐標進行高斯消元。

在介紹 FFT 之前,得先學習 DFT (離散傅里葉變換)算法。

DFT

由于對一個多項式的點值表達式的取是任意的,所以好的取法可能會使一個算法產生本質性的蛻變。

我們選取次單位復根作為來取值。

單位復根

,這個方程的復數根為次單位根。

單位的個單位根分別為。

個單位根在復平面的坐標表示為,我們將這個記為。在復平面上形象的表示的話,就是下圖:

圖片

單位根在多項式的應用

我們將個單位根帶入多項式可以得到個因變量結果,記為。

我們將個單位根的倒數作為自變量帶入由作為系數的多項式,可以得到。

而當的時候,它為,其余時候,它為(通過等比數列求和)。于是有。

于是可以發現,將個單位根的倒數帶入變換后的多項式,可以得到原來的多項式。

這樣一來,我們利用個單位根的性質,完成了多項式兩種表示方式之間的轉換。

DFT算法

有了的取值,我們就可以得到的取值了。

直接暴力計算,兩個方向轉換的時間復雜均為。

FFT

那么 FFT 算法是如何優化計算這一過程的?利用分治。

我們把一個多項式的計算分為偶數項的計算和奇數項的計算:

也就是說, FFT 的思想就是不斷得把一個多項式拆分成奇數多項式和偶數多項式,然后合并兩個多項式的信息

也就是說,如果我們已經得到了和,我們只需要就可以得到了。

每次都能把多項式的長度減小一半,于是時間復雜度就是。

模版

C++ 是自帶了復數 stl 的,即:

#include

但是常數大,跑得慢,不如自己重載的好。

  • 下面的模版必須要保證是的整數次冪。
typedef double LD;
const LD PI = acos(-1);
struct C {
    LD r, i;
    C(LD r = 0, LD i = 0): r(r), i(i) {}
};
C operator + (const C& a, const C& b) {
    return C(a.r + b.r, a.i + b.i);
}
C operator - (const C& a, const C& b) {
    return C(a.r - b.r, a.i - b.i);
}
C operator * (const C& a, const C& b) {
    return C(a.r * b.r - a.i * b.i, a.r * b.i + a.i * b.r);
}

void FFT(C x[], int n, int p) {
    for (int i = 0, t = 0; i < n; ++i) {
        if (i > t) swap(x[i], x[t]);
        for (int j = n >> 1; (t ^= j) < j; j >>= 1);
    }
    for (int h = 2; h <= n; h <<= 1) {
        C wn(cos(p * 2 * PI / h), sin(p * 2 * PI / h));
        for (int i = 0; i < n; i += h) {
            C w(1, 0), u;
            for (int j = i, k = h >> 1; j < i + k; ++j) {
                u = x[j + k] * w;
                x[j + k] = x[j] - u;
                x[j] = x[j] + u;
                w = w * wn;
            }
        }
    }
    if (p == -1)
        FOR (i, 0, n)
            x[i].r /= n;
}

void conv(C a[], C b[], int n) {
    FFT(a, n, 1);
    FFT(b, n, 1);
    FOR (i, 0, n)
        a[i] = a[i] * b[i];
    FFT(a, n, -1);
}

例題

A * B II

https://acm.ecnu.edu.cn/problem/3007/

大整數相乘。

把每一位都看成是多項式其中一項的系數,那么大數最后的結果也就是多項式乘法系數的結果。

要進位處理。

Hnoi2017 禮物

顯然是要計算的最小值,其中$0≤x

展開這個式子,

除了,其他的和與相關的項都可以在的時間內算出了

那么配個方,就可以求出最小值了,而是固定的

現在的問題就是求,我們可以用FFT來解決

如果我們把多項式倒置,我們就能發現式子的和的下標和可以相同,我們可以利用多項式乘法同時算出卷積。

設,那么,這樣就可以用FFT算出來了

總的時間復雜度

#include
#define inf 0x3fffffff
using namespace std;

typedef double LD;
const LD PI=acos(-1);
struct C
{
    LD r,i;
    C(LD r=0,LD i=0):r(r),i(i){}
};
C operator + (const C& a, const C& b){
    return C(a.r+b.r,a.i+b.i);
}
C operator - (const C& a, const C& b){
    return C(a.r-b.r,a.i-b.i);
}
C operator * (const C& a, const C& b){
    return C(a.r*b.r-a.i*b.i,a.r*b.i+a.i*b.r);
}
 
void FFT(C x[],int n,int p)
{
    for (int i=0,t=0;i
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 圖像處理
    +關注

    關注

    27

    文章

    1293

    瀏覽量

    56772
  • FFT
    FFT
    +關注

    關注

    15

    文章

    434

    瀏覽量

    59403
  • 計算機網絡
    +關注

    關注

    3

    文章

    339

    瀏覽量

    22179
  • 傅立葉變換
    +關注

    關注

    3

    文章

    105

    瀏覽量

    32404
收藏 人收藏

    評論

    相關推薦

    快速傅立葉變換(FFT)算法實驗

    本帖最后由 mr.pengyongche 于 2013-4-30 02:23 編輯 快速傅立葉變換(FFT)算法實驗一、摘
    發表于 12-21 10:54

    如何使用快速傅立葉變換FFT)的8590 C/E/L系列頻譜分析儀中的FFT函數?

    本產品說明說明了如何使用快速傅立葉變換FFT)的8590 C/E/L系列頻譜分析儀中的FFT函數。FFT通過提供智能用戶界面簡化了AM分析
    發表于 04-04 16:50

    淺懂示波器FFT快速傅立葉變換功能及運用

    大多數示波器上都有個FFT功能,也叫快速傅立葉變換,但很多人不了解這個功能是做什么用的,百度以后又會遇到各種各樣的高數公式,看的一頭霧水,遂而放棄這塊知識。我們來看百度百科的解釋:FFT
    發表于 01-14 17:00

    示波器FFT快速傅立葉變換不會用?看完這篇帖子,我徹底悟了

    大多數示波器上都有個FFT功能,也叫快速傅立葉變換,但很多人不了解這個功能是做什么用的,百度以后又會遇到滿屏的高數公式,看得一頭霧水,繼而以放棄告終。先來看看百度百科對FFT的解釋:
    發表于 09-22 13:42

    快速傅立葉變換開發指南

    快速傅立葉變換開發指南:The Xilinx® LogiCORE™ IP Fast Fourier Transform (FFT) is a computationally
    發表于 12-31 15:19 ?35次下載

    快速傅立葉變換FFT)的Nios II實現

    快速傅立葉變換FFT)的Nios II實現 隨著數字電子技術的發展,數字信號處理的理論和技術廣泛地應用于通訊、語音處理、計算機和多媒體等領域。快速傅里葉
    發表于 02-09 09:38 ?81次下載

    基于FPGA的快速傅立葉變換

    摘要:在對FFT(快速傅立葉變換)算法進行研究的基礎上,描述了用FPGA實現FFT的方法,并對其中的整體結構、蝶形單元及性能等進行了分析。
    發表于 06-20 14:13 ?1104次閱讀

    1024點FFT快速傅立葉變換

    Xilinx FPGA工程例子源碼:1024點FFT快速傅立葉變換
    發表于 06-07 14:13 ?33次下載

    Xilinx 的IP:1024點FFT快速傅立葉變換

    Xilinx FPGA工程例子源碼:Xilinx 的IP:1024點FFT快速傅立葉變換
    發表于 06-07 15:07 ?51次下載

    DSP進行浮點快速傅立葉變換剖析

    前言本文目的是演示如何使用STM32F30x 內部的DSP 進行浮點快速傅立葉變換FFT),為聯系實際應用
    的頭像 發表于 09-18 06:44 ?9528次閱讀

    簡述FPGA的快速傅立葉變換

    摘要:在對FFT(快速傅立葉變換)算法進行研究的基礎上,描述了用FPGA實現FFT的方法,并對其中的整體結構、蝶形單元及性能等進行了分析。 傅立葉
    的頭像 發表于 05-27 11:21 ?2245次閱讀
    簡述FPGA的快速<b class='flag-5'>傅立葉</b><b class='flag-5'>變換</b>

    傅立葉變換是怎么變換傅立葉的理解

    關于傅立葉變換,無論是書本還是在網上可以很容易找到關于傅立葉變換的描述,但是大都讓人很難理解太過抽象,盡是一些讓人看了就望而生畏的公式的羅列。 要理解
    的頭像 發表于 08-25 11:25 ?4911次閱讀

    我印象中的快速傅里葉變換 (FFT)

    首先,FFT是離散傅立葉變換 (DFT) 的快速算法,那么說到FFT,我們自然要先講清楚傅立葉變換
    的頭像 發表于 05-05 09:57 ?1183次閱讀
    我印象中的快速傅里葉<b class='flag-5'>變換</b> (<b class='flag-5'>FFT</b>)

    淺懂示波器FFT快速傅立葉變換功能及運用

    大多數示波器上都有個FFT功能,也叫快速傅立葉變換,但很多人不了解這個功能是做什么用的,百度以后又會遇到各種各樣的高數公式,看的一頭霧水,遂而放棄這塊知識。我們來看百度百科的解釋:FFT
    的頭像 發表于 11-08 15:01 ?6879次閱讀
    淺懂示波器<b class='flag-5'>FFT</b>快速<b class='flag-5'>傅立葉</b><b class='flag-5'>變換</b>功能及運用

    如何使用SBench 6對數字化儀采集信號進行處理?(三)——快速傅立葉變換FFT

    上一篇文章介紹了德思特SBench 6的平均運算功能。本章將繼續為大家介紹SBench 6的快速傅立葉變換FFT)。
    的頭像 發表于 01-23 10:38 ?601次閱讀
    如何使用SBench 6對數字化儀采集信號進行處理?(三)——快速<b class='flag-5'>傅立葉</b><b class='flag-5'>變換</b>(<b class='flag-5'>FFT</b>)
    主站蜘蛛池模板: 国产在线播放不卡| 欧洲亚洲精品A片久久99果冻| 日本高清无人区影院| qvod小电影| 在线不卡日本v二区到六区| 免费观看视频成人国产| G0GO人体大尺香蕉| 色宅男午夜电影网站| 国产无遮挡色视频免费观看性色| 亚洲午夜久久久久久久久电影网| 绿巨人www在线观看| 成人在免费视频手机观看网站| 亚洲成年人免费网站| 伦理片在线线看手机版| 穿白丝袜边走边尿白丝袜| 歪歪漫画羞羞漫画国产| 久久午夜夜伦痒痒想咳嗽P| 抽插内射高潮呻吟爆乳| 亚洲综合网国产精品一区| 奇米网一区二区三区在线观看| 国产一区在线观看免费| 99亚洲精品自拍AV成人软件| 羞羞一区二区三区四区片| 女教师跟黑人男朋友激情过后| 国产色青青视频在线观看| 99国产在线视频| 亚洲欧美中文在线一区| 全彩无翼污之邪恶女教师| 含羞草免费完整视频在线观看| h版动漫在线播放的网站| 亚洲三级视频在线| 少女亚洲free| 欧美一区二区影院| 久久久精品3d动漫一区二区三区| 高H高肉强J短篇校园| 99久久精品免费国产一区二区三区| 亚洲乱码国产乱码精品精98| 思思久久99热只有频精品66| 女人高潮特级毛片| 久青草国产在线视频| 国产亚洲精品 在线视频 香蕉|