傅立葉變換繪製二維圖形|小記

2020-12-14 澎湃新聞

傅立葉變換繪製二維圖形|小記

2019-09-26 14:36 來源:澎湃新聞·澎湃號·湃客

原創: 鄭越升 壞印表機

一般傅立葉變換的舉例圖都是無數枯燥的三角函數疊加成某個無規則的函數,但是最近看了一篇關於傅立葉變換的文章,裡面有張動圖如下圖,很有意思,通過很多相互疊加的圓周運動,可以畫出一個矢量的二維軌跡。

from Jez Swanson

這個動圖戳中了我的興趣點,於是惡補了一下傅立葉變換相關的知識,總算在Processing裡面實現了這個動畫:

在Prcocessing裡實現這個動畫

上面動圖的代碼開源在openprocessing上

>>詳情請戳 https://www.openprocessing.org/sketch/758144

在這裡我只簡單地闡述下一點傅立葉變換的知識和代碼的原理,如果有興趣深入研究的可以閱讀下後面列出的我認為有幫助的文章。

基本定義:對於任何非周期的連續函數,可以用正弦或餘弦乘一個加權函數的積分來表示,這個積分方程稱為傅立葉變換(Fourier Transform)。

這個基本定義看起來無聊極了,如果你想形象地知道傅立葉變換是什麼有什麼用,可以閱讀以下文末的《傅立葉變換交互式入門》一文以及《阿里巴巴公司根據截圖查到洩露信息的具體員工的技術是什麼?- fuqiang liu 的回答》

下面動圖是一個很好的例子,紅色函數是一個及其不規則的形態,但是我們可以通過N個不同頻率、幅度、相位的三角函數疊加來不斷收斂靠近。

from 維基百科

實際上傅立葉變換就如上圖一樣用不同頻率的三角函數來描述一個原函數,我們習慣把它稱為將一個函數表示從時域轉到了頻域的角度。如果用 F 表示以 t 為連續變量的連續非周期函數 f 的傅立葉變換,我們有對應的傅立葉變換公式為:

其中 j 是複數,也就是 -1 的平方根。理解上面的傅立葉變換公式可以看3B1B關於《形象的比喻:什麼是傅立葉變換?》的視頻,參考文章列表裡給出了youtube的地址,不過B站上應該也有搬運和中文字幕。

同樣的,我們有了從時域到頻域的公式,同時也會有對應的從頻域轉換到時域的公式。這個公式會比上面的容易理解,因為它的物理意義很直觀,就是在當前時間點,對所有頻率的三角函數做一個積分計算。這就是傅立葉反變換公式:

有了這兩個公式之後,我們就可以開始寫代碼?在時域和頻域之間自由穿梭了嗎?不,用processing或者p5,自然數e的指數計算比較麻煩,我們可以使用用優雅得有些不可思議的歐拉公式,將指數部分轉換成三角函數計算。歐拉公式如下:

藉助歐拉公式把指數部分換掉,我們得到以下傅立葉變換的公式:

在敲代碼之前,我們回過頭再想想那個戳中興趣點的動圖,它和上面舉的例子不一樣,因為它隨著時間變化的軌跡在一個二維平面,所以它的原函數 f(t) 對應的值應該是一對pair (x, y),我們怎麼處理這兩個值呢?

好在我們傅立葉變換公式處理的信號本身就是複數,如下圖由時間線、實軸和虛軸構成的三維空間裡,我們使用的用於疊加的三角函數可以看做這個空間的一個螺旋波,而 cos 和 sin 分別是這個螺旋波在實數平面和虛數平面的投影函數。這樣一來,我們就可以自然地用 (x + jy) 的形式來表示離散的信號值。

from Richard Lyons

完整的代碼開源在:

https://www.openprocessing.org/sketch/758144

參考文章(按照個人推薦閱讀順序):

1. 《傅立葉變換交互式入門》:

http://www.jezzamon.com/fourier/zh-cn.html

2. 《阿里巴巴公司根據截圖查到洩露信息的具體員工的技術是什麼?- fuqiang liu 的回答》:

https://www.zhihu.com/question/50735753/answer/122593277

3. 《3Blue1Brown: 什麼是傅立葉變換?》:

https://www.youtube.com/watch?v=spUNpyF58BY

4. 《An Interactive Guide To The Fourier Transform 》:

https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/

5. 《Understanding the FFT Algorithm》:

http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/

6. 《The DFT Magnitude of a Real-valued Cosine Sequence》:

https://www.dsprelated.com/showarticle/607.php

7. 《傅立葉變化系列的公式推導及其編程應用 | 三篇》:

https://zhuanlan.zhihu.com/p/41455378

閱讀原文

關鍵詞 >> 可視化,傅立葉變換

特別聲明

本文為澎湃號作者或機構在澎湃新聞上傳並發布,僅代表該作者或機構觀點,不代表澎湃新聞的觀點或立場,澎湃新聞僅提供信息發布平臺。申請澎湃號請用電腦訪問http://renzheng.thepaper.cn。

相關推薦

評論()

相關焦點

  • 可視化傅立葉變換:矩形波的傅立葉變換過程原理
    連續傅立葉變換採用輸入函數f(x)中的時域和把它變成一個全新功能的頻域中的函數F(ω),而傅立葉變換是專門用來解決非周期函數的,非周期函數通過傅立葉變換實現從時域到頻域的轉換,如下對矩形波進行傅立葉變換矩形波是一個比較簡單的周期函數,如下只有一個矩形,所以看作非周期函數,可對其進行傅立葉變換,我們已經很熟悉,矩形波的傅立葉變換圖形是sinc函數,即數學中的Sinx/x函數模型該函數在x=0時,sinc函數值等於1,如下圖
  • 淺談傅立葉變換:關於傅立葉變換的幾種幾何學解釋
    (因為老師PPT用的少,當時很難直觀感受到這倆的區別)       直至信號與系統考試前幾天,偶然看到關於傅立葉變換的幾種幾何學解釋,才了解這背後的巧妙之處(說來慚愧,考試的時候腦子抽了,居然是傅立葉變換性質求錯了,還是對的改錯的, 最後只考了97分。。。)。傅立葉變換的偉大之處在於,它不僅解決了許多實際工程應用中的問題,也給我們認識世界提供了一個全新的視角。
  • 有趣的交互式傅立葉變換網站
    網站的BANNER傅立葉變換是一種在各個領域都經常使用的數學工具。這個網站將為你介紹傅立葉變換能幹什麼,為什麼傅立葉變換非常有用,以及你如何利用傅立葉變換幹漂亮的事。當我們對2D波進行傅立葉變換時,「複雜的」部分被忽略了,所以我們最終也只能得到正弦波。
  • Python 實現圖像快速傅立葉變換和離散餘弦變換
    本文手工實現了 二維離散傅立葉變換 和 二維離散餘弦變換 算法,並在多個圖像樣本上進行測試,以探究二者的變換效果。1. 傅立葉變換實驗原理對一幅圖像進行 離散傅立葉變換 (DFT),可以得到圖像信號的傅立葉頻譜。二維 DFT 的變換及逆變換公式如下:DFT 儘管解決了頻域離散化的問題,但運算量太大。
  • Matlab實現傅立葉變換
    傅立葉變換是將按時間或空間採樣的信號與按頻率採樣的相同信號進行關聯的數學公式。在信號處理中,傅立葉變換可以揭示信號的重要特徵(即其頻率分量)。
  • 形象易懂的傅立葉變換、短時傅立葉變換和小波變換
    一、傅立葉變換關於傅立葉變換的基本概念在此我就不再贅述了,默認大家現在正處在理解了傅立葉但還沒理解小波的道路上。(在第三節小波變換的地方我會再形象地講一下傅立葉變換)下面我們主要講傅立葉變換的不足。二、短時傅立葉變換(Short-time Fourier Transform, STFT)一個簡單可行的方法就是——加窗。我又要套用方沁園同學的描述了,「把整個時域過程分解成無數個等長的小過程,每個小過程近似平穩,再傅立葉變換,就知道在哪個時間點上出現了什麼頻率了。」這就是短時傅立葉變換。
  • 【深度好文】二維圖像離散餘弦變換
    上節分享了二維圖像離散傅立葉變換,本節來繼續講頻域空間的另一種變換–二維離散餘弦變換(Discrete Cosine Transform,DCT
  • 傅立葉為何變換?
    傅立葉變換是很多理工科同學本科階段會接觸的基本概念,但也是比較令人困惑的概念之一。
  • 用圖解的方法解讀傅立葉變換的本質原理
    前面的文章我們詳細地從另一個角度來解讀傅立葉變換,傅立葉變換為非周期函數的處理提供了強有力的數學工具,我們用歐拉公式將e的指數項分解為實數和虛數兩部分我們以矩形函數為例,這個矩形函數的T=∞,左邊對應的是實數情況下的餘弦波,右邊對應的是複數情況下的正弦波函數,我們來看這個波形是如何與傅立葉變換對應的
  • 深入淺出的學習傅立葉變換
    學習傅立葉變換需要面對大量的數學公式,數學功底較差的同學聽到傅立葉變換就頭疼。事實上,許多數學功底好的數位訊號處理專業的同學也不一定理解傅立葉變換的真實含義,不能做到學以致用!本文引用地址:http://www.eepw.com.cn/article/272577.htm  事實上,傅立葉變換的相關運算已經非常成熟,有現成函數可以調用。對於絕大部分只需用好傅立葉變換的同學,重要的不是去記那些枯燥的公式,而是解傅立葉變換的含義及意義。
  • 傅立葉級數傅立葉變換深入理解完整版
    傅立葉分析可分為傅立葉級數(Fourier Serie)和傅立葉變換(Fourier Transformation),我們從簡單的開始談起。二、傅立葉級數(Fourier Series)的頻譜還是舉個慄子並且有圖有真相才好理解。如果我說我能用前面說的正弦曲線波疊加出一個帶90度角的矩形波來,你會相信嗎?你不會,就像當年的我一樣。但是看看下圖:
  • 快速傅立葉變換FFT在MATLAB中的實現
    首先,為什麼要進行傅立葉變換?將時域的信號變換到頻域的正弦信號,正弦比原信號更簡單,且正弦函數很早就被充分地研究,處理正弦信號比處理原信號更簡單。正弦信號的頻率保持性:輸入為正弦信號,輸出仍是正弦信號,幅度和相位可能發生變化,但頻率與原信號保持一致,只有正弦信號才擁有這樣的性質。
  • 在MATLAB中如何實現快速傅立葉變換
    首先,為什麼要進行傅立葉變換?
  • MATLAB二維圖形
    圖7-18  雙軸對數圖形7.2.7  特殊二維圖形1.條形圖在MATLAB中使用函數bar和barh來繪製二維條形圖,分別繪製縱向和橫向圖形。這兩個函數的用法相同。5.離散型數據圖在MATLAB中,可以使用函數stem和stairs繪製離散數據,分別生成二維離散圖形和二維階躍圖形。stem函數調用語法如下。(1)stem(Y):繪製Y的數據序列,圖形起始於X軸,並在每個數據點處繪製一個小圓圈。(2)stem(X,Y):按照指定的X繪製數據序列Y。(3)stem(...
  • 傅立葉變換是個偉大工具
    貫穿時域與頻域的方法之一,就是傳中說的傅立葉分析。傅立葉分析可分為傅立葉級數(Fourier Serie)和傅立葉變換(Fourier Transformation)。鑑於你對積分變換已經心灰意冷,為了讓你對積分變換產生一點好感。
  • 傅立葉變換和拉普拉斯變換的辨識!
    ,傅立葉變換的典型用途是將信號分解成幅值分量和頻率分量)。傅立葉變換能將滿足一定條件的某個函數表示成三角函數(正弦和/或餘弦函數)或者它們的積分的線性組合。在不同的研究領域,傅立葉變換具有多種不同的變體形式,如連續傅立葉變換和離散傅立葉變換。傅立葉變換是一種解決問題的方法,一種工具,一種看待問題的角度。
  • 傅立葉變換,拉普拉斯變換和Z變換的意義
    傅立葉變換能將滿足一定條件的某個函數表示成三角函數(正弦和/或餘弦函數)或者它們的積分的線性組合。在不同的研究領域,傅立葉變換具有多種不同的變體形式,如連續傅立葉變換和離散傅立葉變換。  傅立葉變換是一種解決問題的方法,一種工具,一種看待問題的角度。
  • 解讀「傅立葉變換」公式最直觀的來源
    前一篇文章說明了傅立葉變換形象直觀的原理,根據所述的原理來得出他直觀的變換公式:注意需要結合前一篇文章來理解。:前幾篇文章已經說明歐拉公式代表著一種旋轉運動,那肯定是複平面上進行,這樣才能表現的更加具體。
  • 傅立葉變換終極解釋(下)
    而傅立葉變換則可以讓微分和積分在頻域中變為乘法和除法,大學數學瞬間變小學算術有沒有。傅立葉分析當然還有其他更重要的用途,我們隨著講隨著提。———————————————下面我們繼續說相位譜:通過時域到頻域的變換,我們得到了一個從側面看的頻譜,但是這個頻譜並沒有包含時域中全部的信息。
  • 讓你永遠忘不了的傅立葉變換解析
    ,為什麼要做傅立葉變換等,幫助記憶和理解,目的當然是標題所說:讓你永遠忘不了傅立葉變換這個公式。另,這篇博客還從側面一定程度上回答了另一個問題:為什麼要研究複數本篇博客為形象展示傅立葉變換和歐拉公式與初等群論兩個視頻的筆記結合,希望通過此篇讓所有讀者對傅立葉變換有一個全新的認知,並且宣傳一波 3b1b 良心視頻系列!重塑對未知和知識的渴求知乎相關問題連結,小夥伴們求點讚!