跳转至

Chirp Z 变换

Chirp Z 变换也被称为 Bluestein 算法。与离散傅里叶变换类似,Chirp Z 变换是给出多项式 \(A(x)=\sum_{i=0}^na_ix^i\in\mathbb{C}\lbrack x\rbrack\)\(c\in\mathbb{C}\setminus \{0\}\) 求出 \(A(1),A(c),A(c^2),\dots\) 的一种算法,不要求 \(c\) 为单位根。也可用于数论变换。

方法一

令幂级数 \(A_0(x)=\sum_{i\geq 0}a_ic^{i^2}x^i\) 且对于 \(\forall j\gt n\)\(a_j=0\)\(B_0(x)=\sum _ {i\geq 0}c^{-(i-n)^2}x^i\),对于 \(t\geq 0\)

\[ \begin{aligned} \lbrack x^{n+t}\rbrack (A_0(x)B_0(x))&=\sum_{i=0}^{n+t}\left(\lbrack x^i\rbrack A_0(x)\right)\left(\lbrack x^{n+t-i}\rbrack B_0(x)\right)\\ &=\sum_{i=0}^{n+t}a_ic^{i^2-(i-t)^2}\\ &=c^{-t^2}\sum_{i=0}^{n+t}a_ic^{2it}\\ &=c^{-t^2}A(c^{2t}) \end{aligned} \]

通过计算 \(c^{t^2}\lbrack x^{n+t}\rbrack (A_0(x)B_0(x))\) 可得到 \(A(1),A(c^2),\dots\)。而对于 \(A(c),A(c^3),\dots\) 可构造 \(A(cx)\) 后同理,该算法需两次卷积。因为我们从 \(x^n\) 开始提取系数,所以可以利用循环卷积。

方法二

对于非负整数 \(k\)\(i\) 考虑

\[ ki=\binom{i+k}{2}-\binom{i}{2}-\binom{k}{2} \]

其中 \(\binom{a}{b}=\frac{a(a-1)\cdots (a-b+1)}{b!}\) 为二项式系数,那么

\[ A(c^k)=c^{-\binom{k}{2}}\sum _ {i=0}^na_ic^{\binom{i+k}{2}-\binom{i}{2}} \]

\(A_0(x)=\sum_{i}a_{n-i}c^{-\binom{n-i}{2}}x^i\) 且对于 \(\forall j\gt n\)\(\forall j\lt 0\)\(a_j=0\)\(B_0(x)=\sum_{i\geq 0}c^{\binom{i}{2}}x^i\) 那么对于 \(t\geq 0\)

\[ \begin{aligned} \lbrack x^{n+t}\rbrack (A_0(x)B_0(x))&=\sum _ {i=0}^{n+t}\left(\lbrack x^{n+t-i}\rbrack A_0(x)\right)\left(\lbrack x^{i}\rbrack B_0(x)\right)\\ &=\sum_{i=0}^{n+t}a_{i-t}c^{\binom{i}{2}-\binom{i-t}{2}}\\ &=\sum_{i=-t}^na_ic^{\binom{i+t}{2}-\binom{i}{2}}\\ &=c^{\binom{t}{2}}\cdot A(c^t) \end{aligned} \]

通过计算 \(c^{-\binom{t}{2}}\lbrack x^{n+t}\rbrack (A_0(x)B_0(x))\) 可得到 \(A(1),A(c),\dots\),该算法需一次卷积。且 \(\forall i\geq 0\)\(c^{\binom{i+1}{2}}=c^{\binom{i}{2}}\cdot c^i\),可递推计算。