天天看點

c++ 提取傅裡葉描述子_教你用 5 分鐘讓你 8 歲兒子快速了解傅裡葉變換

我們如今之是以能夠自由在網際網路裡遨遊,要得益于數字信号處理技術的發展,數字信号處理技術是将聲音、圖檔或者是視訊進行資訊的模拟再将其轉化為數字資訊,該技術也是數字時代的标志性技術,目前已經在儀器儀表、通信、計算機以及圖像圖形處理等領域得到了廣泛應用。

簡單來說,我們平常看電影的這些圖像如何顯示,就是把這些圖像轉化為數字編碼,再進行呈現。現代資訊技術已能把所有的聲音、圖像、文字變成數字,輸入資訊網中傳送,于是對畫面随意進行加工處理成為可能。在你新拍攝的影片中,無論大雪紛飛,還是烈日當頭,或大雨傾盆,均可随心所欲制作。是以也就有了所謂的摳圖門。

c++ 提取傅裡葉描述子_教你用 5 分鐘讓你 8 歲兒子快速了解傅裡葉變換

而數字信号領地最重要的基礎就是傅裡葉變換,它可分析信号的成分,也可用這些成分合成信号。許多波形可作為信号的成分,比如正弦波、方波、鋸齒波等,傅裡葉變換用正弦波作為信号的成分。除此之外,傅裡葉變換在實體學、數論、組合數學、信号處理、機率、統計、密碼學、聲學、光學等領域都有着廣泛的應用。

c++ 提取傅裡葉描述子_教你用 5 分鐘讓你 8 歲兒子快速了解傅裡葉變換

傅裡葉變換

那麼接下來我就來教各位如何讓自己 8 歲的兒子可以簡單了解什麼是傅裡葉變換!

c++ 提取傅裡葉描述子_教你用 5 分鐘讓你 8 歲兒子快速了解傅裡葉變換

首先,我們要來了解一下傅裡葉這個人,傅裡葉是一位數學家,

但是他特别癡迷于熱學,就是研究物質處于熱狀态時的有關性質和規律的實體學分支,1811年,傅立葉向科學院自己的文章《熱的傳播》,在論文中推導出著名的熱傳導方程 ,并提出了傅立葉變換的基本思想。

c++ 提取傅裡葉描述子_教你用 5 分鐘讓你 8 歲兒子快速了解傅裡葉變換

雖然說他是一位科學家和數學家,然而傅裡葉對于熱學太過于癡迷了,封建迷信害死人啊,他認為熱能包治百病,于是在一個夏天,他關上了家中的門窗,穿上厚厚的衣服,坐在火爐邊,于是他被活活熱死了。

從這個例子裡我們發現,即使是大科學家大數學家也很容易迷信謠言、僞科學,掉坑裡呀!

c++ 提取傅裡葉描述子_教你用 5 分鐘讓你 8 歲兒子快速了解傅裡葉變換

傅裡葉墓碑

而雖然傅裡葉變換是誕生于熱學,但是到了計算機時代,人們發現,這個公式可以用來表示分析信号的成分,也可用這些成分合成信号。一下子,傅裡葉變換的重要性就立馬凸顯了起來。

那麼我們就正式開始切入正題,我們這裡隻是簡單了解一下傅裡葉變換的基礎定義與内容,不涉及傅裡葉級數、離散時間傅裡葉變換之類的。

首先知識點先排除,什麼是正餘弦波,首先,直角三角形中,∠C=90°;任意一銳角∠A的對邊與斜邊的比叫做∠A的正弦,也就是sinA=a/c。∠A的餘弦是它的鄰邊比三角形的斜邊,是以co sA=b/c。

c++ 提取傅裡葉描述子_教你用 5 分鐘讓你 8 歲兒子快速了解傅裡葉變換

那麼正線函數和餘弦函數在平面直角坐标系的呈現就是這樣:

c++ 提取傅裡葉描述子_教你用 5 分鐘讓你 8 歲兒子快速了解傅裡葉變換

這樣的知識點對于 8 歲小孩子來說,還是可以簡單了解成功的。是以說正餘弦波就是指正坐标軸餘弦函數的波形。

正題來了,傅立葉變換(的三角函數形式)的基本原理是:多個正餘弦波疊加(藍色)可以用來近似任何一個原始的周期函數(紅色)

c++ 提取傅裡葉描述子_教你用 5 分鐘讓你 8 歲兒子快速了解傅裡葉變換

你可以簡單地了解為,我們去菜市場買菜的時候,無論品質如何奇怪,都可以轉變為“5個 1 斤的砝碼,2個 1 兩的砝碼”來表示出來,那麼上面的圖我們也可以近似地想象成周期函數就是品質特别奇怪的物品,而正餘弦波就是想像成成“我用了5個1号波、3個2号波”來表示這個周期函數。

如果還不明白,就可以看看正餘弦波是如何變化成周期函數的。

c++ 提取傅裡葉描述子_教你用 5 分鐘讓你 8 歲兒子快速了解傅裡葉變換
c++ 提取傅裡葉描述子_教你用 5 分鐘讓你 8 歲兒子快速了解傅裡葉變換
c++ 提取傅裡葉描述子_教你用 5 分鐘讓你 8 歲兒子快速了解傅裡葉變換

我們日常遇到的琴音、震動等都可以分解為正弦波的疊加,電路中的周期電壓信号等信号都可以分解為正弦波的疊加。

那麼接下來,我們再深入講一下,我們再來了解兩個概念,時間是永遠在流動的花謝花開、潮來潮往,世界永遠在不停地變化,而以時間為參照系去看待這個世界,我們就叫它時域分析。

就好像心電圖一樣,心電圖是記錄心髒每一心動周期所産生的電活動變化,是以随着時間變化心電圖也會變化。這就是時域。

c++ 提取傅裡葉描述子_教你用 5 分鐘讓你 8 歲兒子快速了解傅裡葉變換

而頻域呢,就是描述信号在頻率方面特性時用到的一種坐标系,頻域就是裝着正弦函數的空間,自然而然的,正餘弦波是頻域中唯一存在的波形。

c++ 提取傅裡葉描述子_教你用 5 分鐘讓你 8 歲兒子快速了解傅裡葉變換

心電圖符号

我們從時域我們可以觀察到心髒随着時間變化在不停地跳動的情形,但是從頻域來看,就是一個簡單的心電圖符号。如果時域是運動永不停止的,那麼頻域就是靜止的。

在很多領域我們都可以用到時域和頻域,在時域,我們觀察到鋼琴的琴弦一會上一會下的擺動,就如同一支股票的走勢;而在頻域,隻有那一個永恒的音符。

c++ 提取傅裡葉描述子_教你用 5 分鐘讓你 8 歲兒子快速了解傅裡葉變換

剛剛我們講了多個正餘弦波疊加可以用來近似任何一個原始的周期函數,我們心髒不同時間、不同強度的跳動就成了我們所看到的心電圖。就可以看作正餘弦波疊加成的周期函數。同樣的,利用對不同琴鍵不同力度,不同時間點的敲擊,可以組合出任何一首樂曲,也可以看作餘弦波疊加成的周期函數。

c++ 提取傅裡葉描述子_教你用 5 分鐘讓你 8 歲兒子快速了解傅裡葉變換

而對于信号來說,信号強度随時間的變化規律就是時域特性,信号是由哪些單一頻率的信号合成的就是頻域特性傅裡葉變換實質涉及的是頻域函數和時域函數的轉換。

那麼正餘弦波是如何疊加成周期函數的呢?随着正弦波數量逐漸的增長,他們最終會疊加成一個标準的矩形,不僅僅是矩形,你能想到的任何波形都是可以如此方法用正餘弦波疊加起來的。

c++ 提取傅裡葉描述子_教你用 5 分鐘讓你 8 歲兒子快速了解傅裡葉變換
各位看到了那一條條正餘弦波了嗎?時域是永遠随着時間的變化而變化的,而頻域就是裝着裝着正餘弦波的空間。
c++ 提取傅裡葉描述子_教你用 5 分鐘讓你 8 歲兒子快速了解傅裡葉變換

從這個方向看過去的側面圖就是頻域

從時域來看,我們會看到一個近似為矩形的波,而我們知道這個矩形的波可以被差分為一些正弦波的疊加。而從頻域方向來看,我們就看到了每一個正餘弦波的幅值,每兩個正弦波之間都還有一條直線,那并不是分割線,而是振幅為 0 的正弦波!也就是說,為了組成特殊的曲線,有些正弦波成分是不需要的。

随着疊加的遞增,所有正弦波中上升的部分逐漸讓原本緩慢增加的曲線不斷變陡,而所有正弦波中下降的部分又抵消了上升到最高處時繼續上升的部分使其變為水準線。一個矩形就這麼疊加而成了。但是要多少個正弦波疊加起來才能形成一個标準 90 度角的矩形波呢?不幸的告訴大家,答案是無窮多個。

是以,我們可以再來看一下開頭的動圖,是不是就更加能夠了解了。

c++ 提取傅裡葉描述子_教你用 5 分鐘讓你 8 歲兒子快速了解傅裡葉變換

而想要完美地表示正餘弦波,除了正餘弦波的幅值是不行的,還需要相位譜的幫忙,什麼是相位呢?就是對于一個波,特定的時刻在它循環中的位置:一種它是否在波峰、波谷或它們之間的某點的标度。

不同相位決定了波的位置,是以對于頻域分析,僅僅有幅值是不夠的,我們還需要一個相位譜。頻譜的重點是側面看,相位譜的重點則是從下面看。

c++ 提取傅裡葉描述子_教你用 5 分鐘讓你 8 歲兒子快速了解傅裡葉變換

如上圖所示:投影點我們用粉色點來表示,紅色的點表示離正弦函數頻率軸最近的一個峰值,而相位差就是粉色點和紅色點水準距離除以周期。将相位差畫到一個坐标軸上就形成了相位譜。

總結一下,傅立葉變換就是多個正餘弦波疊加可以用來近似任何一個原始的周期函數,它實質是是頻域函數和時域函數的轉換。而其中時域就是永遠随着時間的變化而變化的,而頻域就是裝着裝着正餘弦波的空間,代表着每一條正餘弦波的幅值,而表示正餘弦波除了幅值是不夠的,就還有相位譜。

c++ 提取傅裡葉描述子_教你用 5 分鐘讓你 8 歲兒子快速了解傅裡葉變換

這樣看來,是不是很快就了解整個的傅裡葉變換呢,在這裡面,我們并沒有講到許多很複雜的數學定理和數學公式,通過具像化的表述便于孩子了解?你可以在和自己孩子講解的過程中看看你孩子的邏輯思維能力,如果他可以很快輕松地掌握,證明他的邏輯思維能力特别棒,那麼你可以多培養一下他的數學愛好,在數學上是肯定具有天賦的。

繼續閱讀