自然序列平方的DFT
01 离散傅里叶变换
一、前言
二、N的平方序列
对于序列平方的离散傅里叶变换, 可以直接利用定义, 再施加一定的数学推导, 经过整理之后, 便可以得到最后的结果。 下面利用数值仿真的方法, 来验证一下这个公式是否正确。
1、推导n的DFT
from headm import *
N = 10
def D(k):
if k == 0:
return sum([i**1 for i in range(N)])
W = exp(-1j*2*pi/N)**k
return (-N)/(1-W)
ndim = [i**1 for i in range(N)]
printf(ndim)
dftn = fft.fft(ndim)
dft1 = array([D(i) for i in range(N)])
printf(abs(dftn), abs(dft1))
printf(dftn, dft1)
三、序列平方DFT
对于自然数平方序列 下面推导一下它的离散傅里叶变换。 这是 DFT 公式, 其中 W 是 e 的 负j N 分之 2 Pi。 它有一个性质, 对于 N 的整数倍数次幂, 经过化简, 可以知道它等于 e 的 负 j, 2 Pi k, 这个数值等于 1。 这个属性待会儿在求解过程中会使用到。
对于序列平方的离散傅里叶变换, 其中 k 等于 0 时, 结果比较简单, 它等于 n 的平方的累加, 这里就给出了对应的结果。 下面我们推导一下, k 不等于 0 时, 这个变化结果。
下面为了书写方便, 先对 k=1 的情况进行推导, 后面再 利用 W 的 nk 次方替换 W n 次方。 由于在后面需要应用到 n 的离散傅里叶变换, 在这里先求 n 的 傅里叶变换。 对于上面这个系数为等差序列的等比序列的求和, 将其不同的想进行拆解, 每一行都是等比序列, 对于第一行, 根据等比序列, 可以计算出累加和等于 1 减 W 分之 W 减去 W 的 N 次方。 第二行也是一个等比序列。 它的累加和等于 首项 减去 尾项乘以等比, 再除以 1 减去 等比。 其余各项都可以推导出来。 将这些结果类加在一起, 对其进行化简。 其中 W 的 N 次方, 刚才已经说明过 它等于 1。 前面是一个等比序列的累加和, 写出它的结果, 将 W 的 N 次方更换为 1, 前面这一项等于 负一。 对于分子进行化简, 最终等于 负 N 。 至此, 我们先得到了 序列 n 的离散傅里叶变换。
这个结果 留作后面使用。 下面推导 n 的平方的离散傅里叶变换公式。 根据公式, 继续将其展开, 利用相同的技巧, 把它展成许多等比序列之和, 我们可以写出每一组等比序列累加结果。 然后再合并这些累加和。 提出相同的分母, 里面包括有 2k 减去 1 乘以 W 的k 次方的累加, 还有一个等差序列的累加。 其中 W 的 N次方等于 1, 所以后面就是等差序列累加和, 结果等于N 减 1 的平方。 前面的累加和可以拆成两项, 后面一项是等比序列累加和, 写出它的结果。 前面一项是关于 序列 n 的 离散傅里叶变换, 这个结果前面刚刚求出, 将其代入。 对于中间的结果进行化简, 它等于 负1。 最终合并后面两项, 这是化简后的结果。 写出最终的结果。
根据这个结果, 最终可以得到关于 k 不等于 0 时对应的离散傅里叶变换。 这是 n 的平方序列的离散傅里叶变换结果。 请注意, k 等于 0 时的表达式需要单独写出来。
▲ 图1.3.1 推导过程
四、数值验证
下面使用 Python 程序, 验证一下这个结果是否正确。 在这里验证 N 等于 10 的时候,使用推导结果与FFT计算结果进行对比。 这是根据刚才推动的公式, 计算不同 k 时 对应的变换结果。 定义 n 平方的数组。 直接使用 FFT 计算出 结果。 利用公式计算出结果。 输出两个计算结果数值, 对比它们是否相同。 这是输出两种方法计算的结果, 可以看出使用给定的公式和 FFT 计算出的结果是一样的。 由此,验证了这个公式的正确性。
from headm import *
N = 10
def D(k):
if k == 0: return N*(N+1)*(2*N+1)/6
W = exp(-1j*2*pi/N)**k
return (-N**2-(2*N-N**2)*W)/(1-W)**2
ndim = [i**2 for i in range(N)]
dftn = fft.fft(ndim)
dft1 = array([D(i) for i in range(N)])
printf(abs(dftn), abs(dft1))
printf(dftn, dft1)
下面是计算结果:
[285. 153.90228295 77.44867398 55.80400795 47.346625
45. 47.346625 55.80400795 77.44867398 153.90228295]
[385. 153.90228295 77.44867398 55.80400795 47.346625
45. 47.346625 55.80400795 77.44867398 153.90228295]
[285. +0.00000000e+00j 2.36067977+1.53884177e+02j
-35.52786405+6.88190960e+01j -42.36067977+3.63271264e+01j
-44.47213595+1.62459848e+01j -45. +1.06581410e-14j
-44.47213595-1.62459848e+01j -42.36067977-3.63271264e+01j
-35.52786405-6.88190960e+01j 2.36067977-1.53884177e+02j]
[385. +0.j 2.36067977+153.88417686j
-35.52786405 +68.81909602j -42.36067977 +36.3271264j
-44.47213595 +16.24598481j -45. +0.j
-44.47213595 -16.24598481j -42.36067977 -36.3271264j
-35.52786405 -68.81909602j 2.36067977-153.88417686j]
※ 总 结 ※
本文推到了 自然序列平方的离散傅里叶变换公式, 对于和这个习题相关的参考答案进行更新。
■ 相关文献链接:
● 相关图表链接: