实序列为什么还有虚部_实序列快速傅里叶变换(一)

本文介绍了如何计算实序列的快速傅里叶变换(FFT),利用实序列的共轭对称性减少计算量和存储量。通过C语言实现的rfft函数展示了具体算法,该算法在计算FFT时只处理序列的一半,从而达到效率提升。
摘要由CSDN通过智能技术生成

一、功能

计算实序列的快速傅里叶变换。

二、方法简介

实序列\(x(n)\)的离散傅立叶变换为

\[

X(k)=\sum_{n=0}^{N-1}x(n)W_{N}^{nk} \ , \ k=0,1,...,N-1

\]

上式可用复序列FFT算法进行计算。但考虑到\(x(n)\)是实数,为进一步提高计算效率,需要对按时间抽取的基2复序列FFT算法进行一定的修改。

如果序列\(x(n)\)是实数,那么其傅立叶变换\(X(k)\)一般是复数,但其实部是偶对称,虚部是奇对称,即\(X(k)\)具有如下共辄对称性: \(X(0)\)和\(X(N/2)\)都是实数,且有

\[

X(k)=X^{*}(N-k) \ , \ 1 \leqslant k \leqslant \frac{N}{2} - 1

\]

在计算离散傅立叶变换时,利用这种共辄对称性,我们就可以不必计算与存储\(X(k)(N/2 + 1 \leqslant k \leqslant N — 1)\)以及\(X(0)\)和\(X(N/2)\)的虚部,而仅需计算\(X(0)\)到\(X(N/2)\)即可。此处我们选择的是计算\(X(0)\)到\(X(N/4)\)和\(X(N/2)\)到\(X(3N/4)\), 这样做可以恰好利用复序列FFT 算法的前\((N/4)+1\)个复数蝶形。这就是按时间抽取的基2实序列FFT算法,它比复序列FFT算法大约可减少一半的运算量和存储量。

三、使用方法

是用C语言实现实序列快速傅里叶变换的方法如下:

/************************************

x ----长度为n。开始时存放要

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值