跳转至

Chirp Z 变换

Chirp Z 变换也被称为 Bluestein 算法。与离散傅里叶变换类似,Chirp Z 变换是给出多项式 A(x)=i=0naixiC[x]cC{0} 求出 A(1),A(c),A(c2), 的一种算法,不要求 c 为单位根。也可用于数论变换。

方法一

令幂级数 A0(x)=i0aici2xi 且对于 j>naj=0B0(x)=i0c(in)2xi,对于 t0

[xn+t](A0(x)B0(x))=i=0n+t([xi]A0(x))([xn+ti]B0(x))=i=0n+taici2(it)2=ct2i=0n+taic2it=ct2A(c2t)

通过计算 ct2[xn+t](A0(x)B0(x)) 可得到 A(1),A(c2),。而对于 A(c),A(c3), 可构造 A(cx) 后同理,该算法需两次卷积。因为我们从 xn 开始提取系数,所以可以利用循环卷积。

方法二

对于非负整数 ki 考虑

ki=(i+k2)(i2)(k2)

其中 (ab)=a(a1)(ab+1)b! 为二项式系数,那么

A(ck)=c(k2)i=0naic(i+k2)(i2)

A0(x)=ianic(ni2)xi 且对于 j>nj<0aj=0B0(x)=i0c(i2)xi 那么对于 t0

[xn+t](A0(x)B0(x))=i=0n+t([xn+ti]A0(x))([xi]B0(x))=i=0n+taitc(i2)(it2)=i=tnaic(i+t2)(i2)=c(t2)A(ct)

通过计算 c(t2)[xn+t](A0(x)B0(x)) 可得到 A(1),A(c),,该算法需一次卷积。且 i0c(i+12)=c(i2)ci,可递推计算。