Chirp-Z_转换

**啁啾 - Z 轉換**（Chirp-Z transform）為離散傅立葉變換（DFT）的一般化，是一種適合於計算當**取樣頻率間隔**（**sampling frequency interval**）與**取樣時間間隔**（**sampling time interval**）乘積的倒數**不等於**信號的時頻分佈面積時的**演算法**，其為利用卷積來實現任意大小的離散傅立葉變換（DFT）的快速傅立葉變換演算法。

具體來說，啁啾 - Z 轉換沿著對數螺旋輪廓，計算出有限數量的點 zk 的 Z 轉換，其定義如下：

　
: $X_{k}=\sum _{n=0}^{N-1}x(n)z_{k}^{-n}$

　
: $z_{k}=A\cdot W^{-k},k=0,1,\dots ,M-1$

其中 _A_ 為起始點，_W_ 為點與點之間的比率，_M_ 為需要計算的點的數量。

## 布魯斯坦演算法

離散信號 $x_{n}$ 的離散傅立葉變換可以寫成下列的形式

　
: $X_{k}=\sum _{n=0}^{N-1}x_{n}e^{-{\frac {2\pi i}{N}}nk}\qquad k=0,\dots ,N-1.$

其中 $e^{-{\frac {2\pi i}{N}}nk}\qquad $ 這項的 $nk$ 可以利用平方式展開得到，如下式所示

　
: $(n-k)^{2}=n^{2}-2nk+k^{2}\Rightarrow nk=-{\frac {(n-k)^{2}-n^{2}-k^{2}}{2}}$

所以

　
: $e^{-{\frac {2\pi i}{N}}nk}=e^{{\frac {2\pi i}{N}}{\frac {(n-k)^{2}-n^{2}-k^{2}}{2}}}=e^{{\frac {\pi i}{N}}(n-k)^{2}}e^{-{\frac {\pi i}{N}}n^{2}}e^{-{\frac {\pi i}{N}}k^{2}}$

而將此平方展開式帶回原式我們可以得到

　
: $X_{k}=\sum _{n=0}^{N-1}x_{n}e^{-{\frac {2\pi i}{N}}nk}=e^{-{\frac {\pi i}{N}}k^{2}}\sum _{n=0}^{N-1}(x_{n}e^{-{\frac {\pi i}{N}}n^{2}})e^{{\frac {\pi i}{N}}(n-k)^{2}}\qquad k=0,\dots ,N-1.$

上面的累加結果恰為兩個序列 _a_n 及 _b_n 的卷積，兩序列的定義如下：

　
: $a_{n}=x_{n}e^{-{\frac {\pi i}{N}}n^{2}}$

　
: $b_{n}=e^{{\frac {\pi i}{N}}n^{2}},$

而產生的卷積結果會再乘上 _N_ 個相位的參數 _b_k\*：

　
: $X_{k}=b_{k}^{*}\sum _{n=0}^{N-1}a_{n}b_{k-n}\qquad k=0,\dots ,N-1.$

 
因此離散信號 $x_{n}$ 的離散傅立葉變換現在可以分成三個步驟來實現：

* **STEP 1**：對於信號 $x_{n}$ 的每一個取樣點都乘上 $e^{-{\frac {\pi i}{N}}n^{2}}$
* **STEP 2**：接著再與 $e^{{\frac {\pi i}{N}}(n-k)^{2}}$ 做線性卷積
* **STEP 3**：最後乘上 $e^{-{\frac {\pi i}{N}}k^{2}}$

如此即可得到不同頻率成分的 $X_{k}$ 。

此卷積動作可以透過卷積理論所實現，其中，由於這些快速傅立葉轉換結果的長度 _N_ 不同，導致我們必須透過補零的方式，將快速傅立葉轉換的結果補至長度大於或等於 _2N - 1_，才能精確計算其卷積結果。此外，布魯斯坦演算法提供一個時間複雜度為 O (_N_ log _N_) 的方式計算質數大小的離散傅立葉轉換。

在布魯斯坦演算法的卷積過程中使用補零的方式是值得討論的。如果我們將訊號補至長度為 _M_ ≥ 2_N_–1，代表 _a_n 被擴展至長度為 _M_ 的陣列 _A_n，其中當 0 ≤ _n_ < _N_ 時，_A_n = _a_n，否則 _A_n = 0。然而，基於卷積中的 _b_k–_n_ 項， _b_n 需要 n 的正值和負值。在陣列中補零的離散傅立葉轉換的周期性邊界，代表著 _-n_ 等於 _M - n_。因此，_b_n 被擴展到長度為 _M_ 的陣列 _B_n，其中 _B_0 = _b_0，_B_n = _B_M–_n_ = _b_n(當 0 < _n_ &lt)，否則，_B_n = 0。然後根據通常的捲積定理對 _A_ 和 _B_ 進行快速傅立葉轉換，逐點相乘，並進行逆快速傅立葉轉換以獲得 _a_ 和 _b_ 的卷積。

讓我們更準確地說明，布魯斯坦演算法的離散傅立葉轉換需要什麼類型的捲積。如果序列 _b_n 在具有周期 _N_ 的 _n_ 中是具有周期性的，那麼它將是長度為 _N_ 的循環卷積，並且，為了計算上的方便而使用補零的方式。但是，通常情況並非如此：

　
: $b_{n+N}=e^{{\frac {\pi i}{N}}(n+N)^{2}}=b_{n}e^{{\frac {\pi i}{N}}(2Nn+N^{2})}=(-1)^{N}b_{n}.$

因此，當 _N_ 為偶數時，卷積是具有週期性的，但在這種情況下，人們通常使用更有效率的快速傅立葉轉換演算法，例如 Cooley-Tukey 演算法；反之，當 _N_ 為奇數時，_b_n 是反週期性的，並且具有長度 _N_ 的負循環卷積。然而，當如上所述，使用補零的方式江陣列補到至少 2_N_−1 的長度時，兩者之間的差異消失。

## Z 轉換

上述提到的布魯斯坦演算法也可以基於單方面的 Z 轉換，用以計算更一般化的轉換 (Rabiner et al, 1969)，特別是具有以下形式的轉換：

　
: $X_{k}=\sum _{n=0}^{N-1}x_{n}z^{nk}\qquad k=0,\dots ,M-1,$

其中 _z_ 為任意複數，_N_ 以及 _M_ 分別為輸入及輸出的數量。

由前面所提到的布魯斯坦演算法，我們可以進行如此的轉換。例如，獲得訊號某一部分頻譜中的內插值，以及在傳遞函數分析中增加任意極點，皆為其應用之一。

該演算法被稱為啁啾 - Z 轉換演算法，是因為在傅立葉轉換的情境 (|_z_| = 1) 下，一序列 _b_n 是一複數正弦波，而在雷達系統中則被稱作「啁啾」。

## 相關條目

* 卷積
* 離散傅立葉變換
* 快速傅立葉變換
* 啁啾（Chirp）

## 參考文獻

* Jian-Jiun Ding, class lecture of Time Frequency Analysis and Wavelet transform, Graduate Institute of Communication Engineering, National Taiwan University, Taipei, Taiwan, 2007.
* Jian-Jiun Ding, class lecture of Time Frequency Analysis and Wavelet transform, Graduate Institute of Communication Engineering, National Taiwan University, Taipei, Taiwan, 2018.
* http://cnx.org/content/m12013/latest/（頁面存檔備份，存於網際網路檔案館）