【信号与系统第四章】11、离散傅里叶级数(快速傅里叶变换)

一、引入:离散傅里叶级数

对于离散傅里叶变换【离散(无穷多项)\rightarrow连续】:

                                                      正变换:
                                            X(e^{j\omega })=\sum_{n=-\infty }^{+\infty }x[n]e^{-j\omega n}

                                                      逆变换:

                                             x[n]=\frac{1}{2\pi }\int_{2\pi }^{}X(e^{j\omega })e^{j\omega n}d\omega

                                                   其中X(e^{j\omega })2\pi为周期。

要在计算机中实现离散傅里叶变换,正变换的实现要无穷多项加和,在计算机中不易实现,逆变换的连续积分更是不易实现。但如果x[n]是有限项,N项。那么离散傅里叶变换公式(非最终版)将会变为:

                                                     正变换:

                                            X(e^{j\omega })=\sum_{n=0 }^{N-1 }x[n]e^{-j\omega n}

                                                     反变换:

                                            x[n]=\frac{1}{2\pi }\int_{2\pi }^{}X(e^{j\omega })e^{j\omega n}d\omega

对于正变换:有限的x[n]可以变换成一个连续的X(e^{j\omega })吗?显然不能,所以X(e^{j\omega })是一个虚假的连续信号。即,只需知道X(e^{j\omega })在一个周期内的N个值,那么就可以知道X(e^{j\omega })在整个周期内的所有值。

证明:

写成矩阵的形式:

所以只需知道N个X(e^{j\omega })的值,就可以反解出N个x[n]的值,那么再带入公式X(e^{j\omega })=\sum_{n=0 }^{N-1 }x[n]e^{-j\omega n}就可以得到所有的X(e^{j\omega })的值。  图中矩阵为范德蒙德矩阵,其行列式不为0,所以矩阵一定是可逆的。

该过程(由N个X(e^{j\omega })的值反解N个x[n]的值)的计算复杂度为o(n^{3})

如果选取一组特殊的\omega,那么计算x[n]的复杂度可以降为o(n^{2}),即在[0,2\pi )上均匀选取N个点,即选取的\omega为 \omega _{k}=\frac{2\pi }{N}k  , k=0,1,...N-1 ,离散傅里叶变换公式(最终版)将变为:

                                                                正变换:

                        ​​​​​​​        ​​​​​​​                a_{k}=X(e^{j\omega })=\sum_{n=0 }^{N-1 }x[n]e^{-j\frac{2\pi }{N}k n}

                                                                反变换:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​                x[n]=\frac{1}{N}\sum_{k=0 }^{N-1 }a_{k}e^{j\frac{2\pi }{N}k n}

证明反变换公式:

由N个a_{k}反解N个x[n]的值的复杂度变为o(n^{2})

二、快速计算离散傅里叶级数算法(FFT)

FFT算法,将上面计算离散傅里叶级数的计算复杂度由o(n^{2})变为o(nlogn)

1、N=8时,FFT算法

以N=8为例,

显然,将8点离散傅里叶级数变成了两个4点离散傅里叶级数,

流程图为:

下面是4点FFT流程图:

综合后的流程图:

2、N≠8时,FFT算法

(1)N=9时,可以将9点离散傅里叶级数变为三个3点离散傅里叶级数。

(2)N=17时,在计算正变换离散傅里叶级数前,可以在x[n]后补0,将其补为2^{k}长度的序列。

补0法可以增大频域的分辨率。

具体方法是:

举例:

将17点序列补0至128点序列,FFT后得到的a_{k}也将是一个128点序列,如何获取a_{k}的17点序列呢?128/17=7.5294,则17点的a_{k}中的第一个点在128点a_{k}的第七个点和第八个点中间,第七个点和第八个点两点确定一条直线,在带入直线求得17点a_{k}的第一个点,同意的方法求17点a_{k}的其他点。

三、用FFT计算两个序列的卷积

1、定理

时域卷积等于频域相乘,但在此的卷积是循环卷积(圆卷积)。

2、证明

3、用FFT计算普通卷积(非循环卷积)

时域卷积等于频域相乘,但FFT中的卷积是循环卷积(圆卷积)。

那么普通的卷积如何使用FTFT计算呢?答:补0

若要计算x[n]N_{1}点序列)与h[n]N_{2}点序列)的卷积,那么在x[n]后补N_{2}-1个0,在h[n]后补N_{1}-1个0,再采用循环卷积,那么得到的结果就是普通的卷积。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值