# 6.5 頻域的表示法 ## 頻譜 (frequency spectrum) 頻譜是指一個時域的訊號在頻域下的表示方式。簡單來說,就是**頻域的函數圖形**。 我們通常考慮的信號都是在時域下是實數的信號。這應該很好理解,因為時域對應到我們真正在生活中看到的樣子,例如聲音信號、感測器的讀值,也可以是一張照片。想要畫出這些信號的時域函數圖形,就像我們在國中學過的那樣,將$(x,f(x))$點標一標就好了。 但是我們知道,頻域的表示下,函數值往往是**複數的**。而複數的值不能用一張2D的圖表示。要表示一個複數需要兩個分量。兩種基本的表達方式是: - 直角坐標的表示法: 實部+虛部 $z=a+bi$ - 極座標的表示法: 長度+角度 $z=re^{i\theta}$ 所以我們至少需要兩張圖,例如一張$a$-$\omega$圖和一張$b$-$\omega$圖。可惜的是基本上沒人這樣表示,我們習慣用長度+角度的表示法,將他們畫成縱軸分別為長度和角度、橫軸為頻率的圖。根據工程上的命名習慣,把它們叫做**振幅頻譜**(amplitude spectrum)和**相位頻譜**(phase spectrum)。令要表示的目標是$X(\omega)$,振幅記作$|X(\omega)|$,而相位記作$\angle X(\omega)$。 會選擇用極座標的表示法,是因為**長度直接對應到信號的能量**,而角度有時候我們反而不太在乎。當相位不重要的時候,我們也會選擇只用振幅頻譜,並選擇性的標上它原本的相位(例如sine函數的CTFT,會被表成兩個$\delta(\omega)$,高度為$j$ ),這也是為什麼課本常常會出現只有一張圖的頻譜。 ## 離散頻譜 當我們對信號作CTFS、DTFS(DFT)時,得到的頻譜會是離散的。此時離散的圖形就像是DT的信號圖形: 用類似長條圖的方式表示。 在離散頻譜的時候,尤其是DTFS(DFT)只有有限個值,有時候直接寫出頻譜本身的數值還比較快。而很多時候DFT是被應用在程式的實作上面,所以常被寫成陣列、向量、矩陣甚至張量的形式,直接以數值表示而不顯示圖表。 ## 連續頻譜 在連續的狀況下,除非CTFT有解析解,否則沒辦法直接寫出所有的頻域數值。因此連續頻譜多半會以圖形的方式顯示。 除了最簡單的,直接將振幅/相位和頻率的關係直接做圖的頻譜以外,我們還會用特殊的圖表幫助計算。 ### 對振幅取對數 回憶[3.2](/@seanyih/signal-3-2)講過的,對LTI系統而言,有: $$ y=x*h $$其中$h$代表脈衝響應(impulse response)。而根據卷積定理,在頻域上: $$ Y=XH $$ 這代表如果我們手上有一張輸入信號的頻譜,一張脈衝響應的頻譜,我們可以對其進行點對點的相乘,而得到輸出信號的頻譜。這樣就省去了計算卷積的複雜操作。 那麼問題就來了,如果今天$H$是一個濾波器,然後只有1跟0兩種高度,那乘法很簡單,對每個點都只有保留和歸零兩種結果。但如果是一坨很醜的東西呢? 我是不是就得拿尺出來量,然後再按計算機做乘法? 這讓我的操作很不直觀。 所以我們可以用一個小技巧: **對公式兩邊取對數(log)**。那公式就變成: $$ \log Y=\log X+\log H $$這樣一來,如果我的頻譜圖的振幅是用對數軸畫,我只需要將兩者的高度相加,就可以得到輸出頻譜了,是不是方便很多? 在工程上,我們取的對數通常是$20\log_{10}$。取出來的結果稱為**分貝(dB, decibel)**。所以20dB=10(倍),40dB=100(倍),以此類推。其他常用的分貝值還有$\frac{1}{2}\approx-6\,\text{dB},\,\frac{1}{\sqrt{2}}\approx-3\,\text{dB}$。對於電機系的讀者來說,這些在電子學也有教過,所以應該不陌生。 ### 波德圖 (Bode Plot) 一個常用於分析頻率響應的圖稱為波德圖。它在振幅上是對數振幅-對數頻率的圖,相位則是線性相位(多用$[-\pi,\pi]$當縱軸)-對數頻率。一個維基百科上的例子長得像這樣:  對於DT而言,因為頻域只有$2\pi$的寬度,所以通常不會再對頻率取對數。 {%hackmd @seanyih/signal-main %}
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up