作业辅导视频 SS2023-HW14:频谱分析的计算量

离散傅里叶变换计算复杂度

01 第十四次作业


一、习题简介

  下面我们赖分析一下这个题目的求解思路。  

GM1685624854_1280_800.MPG|_-10

二、习题求解

1、计算复杂度

  离散傅里叶变换计算复杂度 除了与序列长度有关之外, 还与实现的方式 有关系,  对于普通的DFT, 和 FFT,  它们所需要的复数加法和乘法是不同的。  对于DFT, 所需要的复数乘法为 N 的平方, 复数加法为 N乘以N减1, 对于FFT, 所需要的复数乘法为二分之N,乘以log 2 N, 复数加法是乘法的一倍。   下面根据这些关系来分析前面习题中的计算量。

GM1685625347_1280_800.MPG|_-7

  对于第一小题,  两个序列如果直接计算他们的线卷积, 所需要的实数乘法与加法的次数, 与它们的长度乘积有关系。 这是利用表格方法计算两个序列卷积的示意图,   从图中可以看出, 完成表格中所有数据计算所需要的乘法次数, 等于两个序列长度乘积。 所需要的加法次数, 可以从下面这个图中计算出来。 这个图形显示了计算所有斜行数值所需要的加法。 达成了三个阶段, 给出了每一阶段所以需要的加法的次数。   将它们合并在一起, 加法的次数等于两个序列长度减去一之后的乘机次数。  根据这个结果,  本小题两个序列卷积所需要的乘法等于 310 乘以24, 等于7440。 所需要的加法次数等于 309 乘以 23, 最终等于7107。

GM1685750552_1280_800.MPG|_-12

  对于第二小问,  利用快速傅里叶变换计算两个序列之间的线卷积, 所需要的实数乘法与加法测次数。  首先需要通过补零将两个序列的长度增加到超过他们长度之和减一, 另外为了使用 FFT计算, 这个长度还需要等于2的整数次幂。 于是, 最终补零长度 N 等于 512。 根据利用 FFT 快速计算 卷积的框架, 这其中需要使用到 两次FFT和一次 FFT逆变换, 对应的计算复杂度与三次 FFT 是相通的, 还有一次频域的乘积, 因此最终所需要的复数乘法由下面这个公式给出。 总攻味 7424。  所需要的复数加法次数由三次 FFT中的复数加法组成, 总攻味 13824。  最后, 再根据一次复数乘法需要 四次实数乘法, 两次实数加法, 一次复数加法需要两次实数加法完成。 这里给出了最终所需要的实数乘法和加法的次数。

GM1685750960_1280_800.MPG|_-5

  下面  对比一下使用两种方法计算序列线卷积所需要的实数乘法he加法的次数。  这是利用 FFT 所需要的计算量,  这是直接卷积计算所需要的计算量, 可以看出直接计算所需要的计算量反而小于利用 FFT计算卷积的计算量。  这主要是因为两个序列的长度相差比较大。 因此。 利用 FFT 加速 卷积计算时, 需要两个序列的长度大体相同, 而且比较长才行。  如果不满足这个条件, 直接利用卷积公式进行计算反而最简单。

GM1685751380_1280_800.MPG|_-7

2、计算时间

  第二小题, 序列的长度为 8192 , 给出了计算平台对应的单片机的运行速度, 实数乘法所需时间为 4.5 微秒, 实数加法为 0.5微秒。  求出分别使用 DFT, FFT 计算序列离散傅里叶变换所需要的时间。 实际上这是上一小题的变相分析。  首先分析一下直接计算所需要的复数乘法和加罚。  然后将其换算成实数乘法和加法次数。   再根据单片机运行速度, 计算出总得时间,  对应 1879 秒, 大约是半个小时的时间。  

  下面在考虑快速傅里叶变换,  这里给出了快速傅里叶变换所需要的复数乘法和加法次数。  将其转换成实数乘法和加法次数。   再根据单片机的允许速度, 得到所需要的时间, 大约 1秒钟左右。  可以看出,  利用快速傅里叶变换所需要的计算时间大大提高了。  速度提高了大约 1800倍左右。  从这儿给了我们一个直观的印象, 原本需要计算半个小时的是算法, 使用 FFT 则只需要 一秒钟便可以得到结果了。

GM1685752010_1280_800.MPG|_-20

  结 ※


  文对于应用离散傅里叶变换的计算复杂度进行了分析。   在一定情况下, 使用 FFT 可以显著提高计算速度。

GM1685752079_1280_800.MPG|_-2


■ 相关文献链接:

猜你喜欢

转载自blog.csdn.net/zhuoqingjoking97298/article/details/130995948
今日推荐