傅立叶变换前后的能量守恒问题 | 您所在的位置:网站首页 › parseval能量守恒公式二维 › 傅立叶变换前后的能量守恒问题 |
在通信系统的仿真中,我们经常需要根据给定的信噪比(SNR: Signal Noise Ratio),为传输的数据加上"加性高斯白噪声(Additive Guassian White Noise)"。但是,传输前的数据,很多时候考虑的是频域的相位,给定的待传输的数据需要经过傅立叶反变换到时域,在时域增加噪声,然后送给接收模块做性能评估。(录制的视频:https://www.bilibili.com/video/BV1kP411V7hq/)问题在于:无论是 Matlab 上,还是 Python 的 numpy 库中,快速傅立叶变换和反变换,在变换的前后,都没有保持能量守恒,这为定量地增加噪声制造了一点小困难。本文试图通过简单的 QPSK 为例子,频域分成 64 个频点,经过 ifft (快速傅立叶反变换)变到时域,然后定量地分析能量的变化情况. 频域有 64 个频点,我们在第二个频点上发送一个信号,幅度为 1,相位为 ,这个信号可以表示为 . 按照直观的理解,我们发送的信号是: 可以展开为: 可以很容易地看到,实部的最大值是 1. 那么上面这个信号的功率,就是其模的平方,可以很容易看到,模的平方就是 1, 则其功率是 1. 我们来看一下用 ifft 之后的结果,64 个频点上只有第二个频点上有信号,其它频点上没有信 号,即是 0: 总计 64 个. 用下面的 python 代码来做 ifft: 画出来的图形如下: 可以看到,幅度的最大值不是 1,程序中打印出来的最大值为 0.015625 ! 为什么呢?我们来观察一下 ifft 的公式: 其中 $N$ 是傅立叶反变换的长度。这个例子中,N=64. 在这个例子中,由于只有 ,其它都是 0,上面公式中的求和项,就退化为之后 k=1参与了运算: 公式 2 与 公式 1 比较,则可以看到,公式二 多了一个 ,从图中也可以看到,最高幅值是 . 讨论到这里,似乎问题已经解决了,但是,仔细看看, ifft 变换后幅度变为原来设想的 64 分之一,那能量在转换前和转换后,是否保持一致呢?我们需要的是保持一致。 我们先从频域看,64 个频域信号的总能量,是每个频率点上能量的和,即:,这个能量是在一个 fft 对应的时间上的,即 64 个采样点内的。则换算成功率,在频域看到的功率为 : 我们只分析一个频点,k=1,在频域看,其能量为 1,这是 k=1这个频率在一个fft对应时间内的能量。 现在看matlab 和 python numpy 库中 ifft 的变换公式: 那么,k=1 对应的波形是: 那么,我们在 64个样点内计算一下能量: 可以看到,频域的能量是 1,而时域的能量是 ,能量相差了 64 倍! 所以, ifft 变换,会导致能量降为转换前的 64 分之一。同理,可以证明, fft 变换,会导致能量放大为变换前的64倍。 如果我们把傅立叶变换对的公式,稍微改变一下放大或者缩小的倍数,则可以保证转换前后的能量保持一致,即能量守恒: FFT 变换: IFFT 变换 使用上面修改过的公式,则可以保证能量前后保持一致。 有时候,我们不仅关心能量保持一致,还要关心这个信号的能量大小,例如我们为了加入一定信噪比 SNR 的高斯白噪声,需要知道信号的功率大小。 注意:后面讨论的能量大小,功率大小,都是基于修改后的傅立叶变换的公式,即保证变换前后能量保持一致的。 在频域看,一个频率点的信号,假设其能量为 1 (一般情况下,例如 QPSK 调制,都是保持能量为 1 的),因为傅立叶反变换后,对应到 N 个采样点的时间,因此,其功率为: . 在时域看,其对应的波形为 : 其能量为(注意:为了与频域保持一致,要注意求和的时间范围是 N 个采样点): 其功率则为 . 那么,如果在频域上,只有一个频率点上有信号,且频域 等于 1,则信号的功率就是 , 则可以根据 SNR 的公式,计算出来需要的噪声的功率。如果 N 个频点上,都有信号,且频域 等于 1,则其功率就是 1. 总结一下:本文的核心,是提醒注意用标准库中的 FFT/IFFT 函数时,存在能量在变换前后不守恒的问题。 延伸阅读: 把傅立叶变换和反变换,看成是线性空间的向量,在坐标轴上的坐标,坐标轴就是线性空间的基,这些基的要求,除了要求任何两个不相同的基之间是正交的,还需要每个基向量的长度为1. 傅立叶变换中的 构成一个合格的基向量,而 不是一个基向量,因为其长度是 . 我们来看一下傅里叶变换中基里面的各个向量(按照正确的方式来列举的): 第一个向量: k=0 第二个向量: k=1 第三个向量: k=2 。。。。 第 k+1 个向量: k=k ..... 第 N 个向量: k=N-1 每个基的模长都为 1: 如果用 matlab 中 傅立叶变换的公式,一个向量是: 则其模长为 N: 这就不是单位向量了。 ======= 感谢阅读到此处: 塑料垃圾危害多,至少不能让塑料垃圾流进河 |
CopyRight 2018-2019 实验室设备网 版权所有 |