第5篇 傅里叶递推算法
傅里叶变换推导

2.3 快速傅立叶变换问题1) 问题背景在数值电路的传输中,为了避免信号干扰,需要把一个连续信号 x(t)先通过取样离散化为一列数值脉冲信号x(0), x(1), …… ,然后再通过编码送到传输电路中。
如果取样间隔很小,而连续信号的时间段又很长,则所得到的数值脉冲序列将非常庞大。
因此,传输这个编码信号就需要长时间的占用传输电路,相应地也需要付出昂贵的电路费用。
那么能否经过适当处理是使上述的数值脉冲序列变短,而同时又不会丧失有用的信息?的经过研究,人们发现,如果对上述数值脉冲序列作如下的变换处理:(1)则所得到的新序列X(0), X(1) , ……将非常有序,其值比较大的点往往集中在某一很狭窄的序列段内,这将非常有利于编码和存储,从而达到压缩信息的目的。
公式(1)就是所谓的离散傅立叶变换,简称DFT。
现在我们来分析一下计算DFT所需要的工作量。
如果我们不考虑公式(7.1)中指数项的运算,那么计算其每一个点X (n) 需要N次复数乘法和N-1次的复数加法。
显然当N很大时,这个工作量也非常巨大。
正是由于这个原因,使得DFT的应用范围在过去很长的时间里受到了严格的限制。
注意到公式(1)是非常有规律性的,那么能否利用这种规律性来降低DFT的计算时间?1965年,凯莱和塔柯的提出了一种用于计算DFT的数学方法,大大减少了DFT的计算时间,同时又特别适用于硬件处理,这就是所谓的快速傅里叶变换,简称FFT。
鉴于DFT的数据结构可以通过傅立叶变换的离散化获得,亦可通过三角插值得到,而本质上又同连续傅里叶分析有着极为密切的关系。
下面我们从傅立叶级数级数和傅立叶积分入手,导出DFT结构的来源和FFT的工作原理。
2)傅立叶变换如果x(t)是定义在整个实轴上的实值或复值函数,则其傅立叶变换可由下式给出:(2)若对任意参数f,上述积分都存在,则(2)式确定了一个函数X(f),称为x(t) 的傅立叶变换。
如果已知X(f) 则利用如下的傅立叶逆变换,还可复原x(t) :(3)若x(t) 和 X(f) 同时满足(2)、(3)式,则称他们是一个傅立叶变换对,记为。
傅里叶变换推导详解

傅里叶变换推导详解三角函数标准形式为公式2.1所示f\left( t \right) = Asin\left( \omega t + \varphi\right)\ \ \ \ \ \ \ \ \ \ \ (2.1)\ \在物理意义上这个函数又称之为正弦信号(正弦波),其中的t为时间变量,A为波幅, ω为角速度, φ为相位,我们可以通过公式2.2求得这个正弦波的频率。
f = \frac{\omega}{2\pi}\ (2.2)根据等式2.2,角速度和正弦波的频率是正相关的。
同时,因为三角函数是周期函数,其在-π到π的积分必定为0,由此性质可写出式2.3,2.4\int_{- \pi}^{\pi}{\sin\left( \text{nx} \right){dx =0\ \ \ \ \ \ \ \ \ (2.3)}}\int_{- \pi}^{\pi}{\cos\left( \text{nx} \right){dx =0\ \ \ \ \ \ \ \ \ (2.4)}}设某三角函数为f\left( x \right) = \sin\left( \text{nx} \right)\ \ \ \ \ \ \ \ \ (2.5)在式2.5两边同时乘以 \sin\left( \text{mx} \right) 同时,对两边在-π到π内进行积分,得出\int_{- \pi}^{\pi}{f\left( x \right)sin(mx)dx} =\int_{- \pi}^{\pi}{\sin\left( \text{nx}\right)sin(mx)dx}\ \ \ \ \ (2.6)由三角函数的积化和差公式,上式可变形为\int_{- \pi}^{\pi}{f( x )\sin( \text{mx} )\text{dx}} = \frac{1}{2}\int_{- \pi}^{\pi}{{ \cos\lbrack ( m - n )x \rbrack - \cos\lbrack ( m + n )x \rbrack }\text{dx}} = \frac{1}{2}\int_{- \pi}^{\pi}{\cos\lbrack ( m - n )x \rbrack\text{dx}} - \frac{1}{2}\int_{-\pi}^{\pi}{\cos\lbrack ( m + n )x \rbrack\text{dx}}\ \ \ (2.7)依据上述推导方法我们可以继续推导出下列公式:\int_{-\pi}^{\pi}{\cos( \text{mx} )\cos( \text{nx} )}dx =\frac{1}{2}\int_{- \pi}^{\pi}{{ \cos\lbrack ( m - n )x \rbrack + \cos\lbrack ( m + nx ) \rbrack }\text{dx}} = \frac{1}{2}\int_{- \pi}^{\pi}{\cos\lbrack ( m - n )x \rbrack\text{dx}} + \frac{1}{2}\int_{-\pi}^{\pi}{\cos\lbrack ( m + n )x \rbrack\text{dx}}\ (2.8)\int_{-\pi}^{\pi}{\sin( \text{mx} )\cos( \text{nx} )}dx =\frac{1}{2}\int_{- \pi}^{\pi}{{ \sin\lbrack ( m - n )x \rbrack + \sin\lbrack ( m + n )x \rbrack }\text{dx}} = \frac{1}{2}\int_{- \pi}^{\pi}{\sin\lbrack ( m - n )x \rbrack\text{dx}} + \frac{1}{2}\int_{-\pi}^{\pi}{\sin\lbrack ( m + n )x \rbrack\text{dx}}\ \ \ (2.9)因为三角函数在-π到π内的积分为0,因此当 m \neq n 时,式2.7、2.8、2.9的结果必定为0,因此可以得出以下结论,频率不同的三角函数相乘在一个周期内(-π到π)的积分必定为0。
离散傅里叶级数递推

离散傅里叶级数递推
离散傅里叶级数可以通过递推的方式计算,具体步骤如下:
1. 首先,给定一个离散信号序列x(n),其中n表示时间点。
2. 计算信号序列的长度N。
3. 初始化离散傅里叶级数系数的数组X(k)。
4. 对于每个频率k,计算离散傅里叶级数系数X(k)。
即使用以下公式计算:
X(k) = sum(x(n) * exp(-2*pi*i*n*k/N))
其中,sum表示对所有的n求和,exp表示求幂,i表示虚数单位。
5. 重复步骤4,直到计算完所有的频率k。
6. 返回离散傅里叶级数系数数组X(k)作为结果。
这样,就完成了离散傅里叶级数的递推计算。
请注意,计算过程中使用的指数函数exp(-2*pi*i*n*k/N)可以通过欧拉公式展开为cos(2*pi*n*k/N) - i*sin(2*pi*n*k/N)。
傅里叶变换的由来及复数下的傅里叶变换公式证明

1、考虑到一个函数可以展开成一个多项式的和,可惜多项式并不能直观的表示周期函数,由于正余弦函数是周期函数,可以考虑任意一个周期函数能否表示成为一系列正余弦函数的和。
假设可以,不失一般性,于是得到:2、将后面的正弦函数展开:于是得到:那么如何计算a n,b n,a0这些参数成为能否展开成为正余弦函数的关键。
上面的这些积分为0被称之为正余弦函数的正交性。
这些证明很简单,可惜当初学习正余弦函数的时候可能遇到过,但是却不知道这些东西能干什么用。
下面的处理手段凸显了大师的风范:如果我们队原函数进行如下积分,得到很神奇的东西:后面的积分很明显是0,于是我们求出了a0的值。
那么如何求出a n,如果让原函数乘以cos(nx)再进行积分。
利用三角函数的正交性,可以得到:再用sin(nx)乘,再进行积分就会得到b n,于是乎得到了一个任意函数展开成为正余弦函数的通用表达式,同时为什么会出现A 0/2而不是直接的A 0的原因也很明朗:就是让整个表达式更具有通用性,体现一种简洁的美。
通过了以上的证明过程,应该很容易记住傅里叶变换的公式。
到此为止,作为一个工程人员不用再去考虑了,可是作为每一个数学家他们想的很多,他们需要知道右侧的展开式为什么收敛于原函数,这个好难,有个叫Dirichlet 的家伙证明出如下结论:有兴趣的可以继续找书看,可惜我有兴趣没时间····至此以2π为周期的傅里叶变换证明完毕,只不过我们经常遇到的周期函数我想应该不会这么凑巧是2π,于是乎任意的一个周期函数如何知道其傅里叶变换呢,数学向来都是一个很具有条理性的东西,任意周期的函数的傅里叶变换肯定也是建立在2π周期函数的基础之上的。
也就是说如何让一个以2l 为周期的函数变成一个以2π为周期的函数,于是乎可以使用z=2π*x/(2l),这样就z 就是一个以2π为周期的函数了,于是乎得到如下公式:傅里叶函数看起来其实还是比较复杂的,有没有一种更简单的表达形式来表示呢。
傅里叶级数公式推导

傅里叶级数公式推导
傅里叶级数是一种将周期函数表示为无穷级数的方法,其基本思想是将周期函数表示为具有不同频率的正弦和余弦函数的无穷级数。
以下是傅里叶级数公式的推导过程:
设f(x)是一个周期为T的周期函数,即f(x+T)=f(x)。
第一步,将f(x)在一个周期内进行离散化,即f(x)=∑n=−NNf(xn)δ(x−xn),其中xn=nT/N,δ(x)是狄拉克δ函数。
第二步,利用三角恒等式sin2(θ)+cos2(θ)=1,将δ(x−xn)展开为正弦和余弦函数的无穷级数。
具体地,δ(x−xn)=2π1[cos(T2π(x−xn))+i sin(T2π(x−xn))]。
第三步,将第二步中的δ(x−xn)代入第一步中的f(x),得到f(x)=2π1∑n=−NN f(xn)[cos(T2π(x−xn))+i sin(T2π(x−xn))]。
第四步,将第三步中的f(x)表示为傅里叶级数的形式。
由于f(x)是周期函数,因此可以将f(x)表示为无穷级数∑k=−∞∞ak cos(T2πkx)+bk sin(T2πkx),其
中ak和bk是傅里叶系数。
综上,傅里叶级数公式可以表示为:f(x)=∑k=−∞∞ak cos(T2πkx)+bk sin(T2πk x),其中ak和bk是傅里叶系数。
常见傅里叶公式展开式

常见傅里叶公式展开式傅里叶级数是一种用三角函数序列表示周期函数的方法。
其中,常见的傅里叶公式展开式有以下几种:正弦函数展开式对于周期为T的函数f(t),它的正弦函数展开式如下所示:f(t) = \frac{a_0}{2} + \sum_{n=1}^{\infty} a_n \sin(\frac{2\pi nt}{T}) + \sum_{n=1}^{\infty} b_n \cos(\frac{2\pi n t}{T})其中,a0、an和bn分别是函数f(t)展开式中的系数。
余弦函数展开式对于周期为T的函数f(t),它的余弦函数展开式如下所示:f(t) = \frac{a_0}{2} + \sum_{n=1}^{\infty} a_n \cos(\frac{2\pi nt}{T}) + \sum_{n=1}^{\infty} b_n \sin(\frac{2\pi n t}{T})其中,a0、an和bn分别是函数f(t)展开式中的系数。
奇函数的傅里叶级数展开式如果函数f(t)是一个奇函数,即满足f(-t) = -f(t),那么它的傅里叶级数展开式简化为正弦函数的展开式,如下所示:f(t) = \sum_{n=1}^{\infty} b_n \sin(\frac{2\pi n t}{T})其中,bn是奇函数f(t)展开式中的系数。
偶函数的傅里叶级数展开式如果函数f(t)是一个偶函数,即满足f(-t) = f(t),那么它的傅里叶级数展开式简化为余弦函数的展开式,如下所示:f(t) = \frac{a_0}{2} + \sum_{n=1}^{\infty} a_n \cos(\frac{2\pi n t}{T})其中,a0和an是偶函数f(t)展开式中的系数。
通过使用傅里叶公式展开式,我们可以将一个周期函数表示为一系列三角函数的线性组合,从而简化对周期函数的分析和计算。
请注意,以上展开式中的系数a0、an和bn需要根据具体函数的性质进行计算,并且展开式的收敛性需要进一步分析。
傅立叶变换的推导

f0t)
1 2
(e
j 2
f0t
e
j 2
f0t )
F( f
)
1 2
[
(
f
f0) ( f
f0)]
8,矩形窗函数 文档仅供参考,如有不当之处,请联系改正。
f (t) GT (t)
A 0
T 2
t
T 2
other
F(
f
)
f
(t)e j2
ftdt
T
2
T 2
Ae j2
ftdt
A
j2
f
(e
j 2
f
T 2
1 T
T
2
T 2
f (t)e jn1tdt
T
两边同乘T,得:T F
(n1)
2
T 2
f (t)e jn1tdt ,其中
T
2
当 T
时,1
2
T
0
n1
∴
2 1
F (n1)
f (t)e jtdt
令 F()
2 1
F(n,1) 则
F (
)
f
(t)e jtdt
f
(t)
n
F (n1) 1
e
j
n1t 1
6,傅里叶变换旳推导 文档仅供参考,如有不当之处,请联系改正。
a0 an (e jn1t e jn1t ) bn (e jn1t e jn1t )
2 n1 2
2j
a0 2
(
an
n1
jbn )e jn1t 2
( an
jbn 2
)e jn1t
令 F(n1)
傅里叶公式及系数公式

傅里叶公式及系数公式傅里叶公式和系数公式,这俩家伙在数学和物理学的世界里可算是大名鼎鼎啦!咱先来说说傅里叶公式。
这玩意儿就像是一把神奇的钥匙,能把复杂的波形或者信号拆解成一个个简单的正弦和余弦波。
你想想,原本看起来乱糟糟、毫无头绪的东西,经过傅里叶公式这么一处理,瞬间变得清晰明了,是不是很神奇?我记得有一次,我在给学生们讲解傅里叶公式的时候,有个小家伙皱着眉头问我:“老师,这傅里叶公式到底有啥用啊?难道就是为了把简单的问题变复杂?”我笑着回答他:“孩子,这可大有用处!比如说,我们手机能接收到清晰的声音和图像,这背后就有傅里叶公式的功劳呢。
”那傅里叶系数公式呢,它就是用来确定这些正弦和余弦波的具体参数的。
就好比你要盖一座房子,傅里叶公式告诉你要用哪些材料(正弦和余弦波),而傅里叶系数公式则告诉你每种材料要用多少。
给你们举个例子啊。
假如我们有一个周期性的电压信号,它的变化规律很复杂。
但通过傅里叶公式和系数公式,我们就能把它分解成不同频率和振幅的正弦波。
这就像是把一团乱麻一根根地捋清楚。
在实际应用中,傅里叶公式和系数公式在通信领域那可是立下了汗马功劳。
比如说,在数字信号处理中,我们要对音频、视频等信号进行压缩和传输,就得依靠它们来分析信号的特征,去除一些不必要的信息,从而节省带宽和存储空间。
还有在图像处理方面,比如说我们对一张模糊的照片进行清晰化处理,或者对有噪声的图像进行降噪,也离不开这两个公式的帮忙。
对于学习物理的同学来说,傅里叶公式和系数公式在研究波动现象、热传导等问题时也是必不可少的工具。
比如说,当我们研究声波在不同介质中的传播时,就可以用它们来分析声波的频谱特性。
总之,傅里叶公式和系数公式虽然看起来有点复杂,让人头疼,但一旦你掌握了它们,就像是拥有了超级武器,可以在数学和物理的世界里披荆斩棘,解决很多看似无解的难题。
所以啊,同学们,别害怕这两个公式,多去琢磨琢磨,多做几道练习题,相信你们一定能把它们拿下!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第5篇 傅里叶递推算法
一个以T 为周期的函数()t f T ,若在[]0,T -上满足狄氏条件(电网中的电压、电流满足),那么,在[]0,T -上就可以展成傅氏级数。
在计算电网中的电压、电流的基波时,存在两种算法:一种随截取不同时刻的窗(积分区间),得到不同的初相角;另一种维持初相角不变。
例如,[]11---k k t T t ,的基波值
()tdt t f T a k k t T t T k ωcos 2111⎰----=
,()tdt t f T b k k t T
t T k ωsin 21
11
⎰----=。
计算[]k k t T t ,-的基波值 第一种算法
()tdt T t f T a S t T t T k k k ωcos 211+=
⎰---,()tdt T t f T
b S t T t T k k k ωsin 21
1+=⎰---。
()()dt t t f T a S t T t T k k k ϕω-=⎰-cos 2,()()dt t t f T b S t T t T k k
k ϕω-=⎰-sin 2。
()1
第二种算法
()()dt T t T t f T a S S t T t T k k k ++=
⎰---ωcos 211,()()dt T t T t f T b S S t T t T k k k ++=⎰---ωsin 21
1。
()tdt t f T a k k t T t T k ωcos 2⎰-=,()tdt t f T
b k
k t T t T k ωsin 2⎰-=。
()2
k k k b j a c 2
1
21+=
比较()1式与()2式,初相角差()1--==k k S S t t T ωωϕ。
这是由于被分解函数()t f T 与相关函数t ωcos ,t ωsin 的时间差引起的。
被分解函数()t f T 后移S T ,而相关函数t ωcos ,
t ωsin 未移。
若相关函数同步后移S T ,就消除了初相角差S ϕ。
电网的应用中并不关心相量的绝对初相角,只关心它们之间的相对相角(相位差)。
因
此,同时刻的相量运算,只要截取相同的窗,采用相同的算法,得到的相位差是正确的。
但是,不同时刻的相量运算,也必须坚持正确的相角关系。
第一种算法的窗只能相差T n ⋅,而第二种算法无此要求。
例如计算突变量,第一种算法故障前窗超前故障后窗T n ⋅且随故障后窗同步推移。
第二种算法固定故障前窗且靠近故障时刻,故障后窗随时间推移。
直观上
()2式比()1式简单、规整,例如采用第二种算法计算
()()[]tdt T t f t f T a a k k t t T T k k ωcos 211⎰---=
--,()()[]tdt T t f t f T b b k
k t t T T k k ωsin 21
1⎰---=-- ()3
若采用第一种算法计算就相对复杂。
将()3离散得递推公式
()()[]N k t f t f N a a N k T k T k k π2cos 2
1---+
=,()()[]N
k t f t f N b b N k T k T k k π2sin 21---+= ()4
应用()4式计算故障分量。
这里引入一个新概念:当前时刻t ,变化量(t )=故障后量(t )
-固定故障前量(譬如,记忆启动前一周波);突变量(t )=故障后量(t )-故障后量(t-T )。
可见,故障后一个周波的变化量=突变量。
将()4式两边同减0a ,0b 。
得故障分量递推公式
()()()[]N k t f t f N a a N k T k T k k π2cos 2
010-----+∆=∆ ()()()[]N
k t f t f N b b N k T k T k k π
2sin
2010
-----+∆=∆
傅立叶采取全波递推算法,无论稳态量,还是变化量。
我们认为,启动前故障已经发生,约定:
启动点
故障前一个周波的记忆数据
t
故障后的第1点
故障前的最后1点
变化量全波傅氏算法
启动前预计算2个点,启动后进入故障处理程序,接着计算第3点……一直递推下去。
具体算法:令,故障前一个周波的全波傅氏计算值为零作为初值。
预递推2个点,第3点在启动后递推。
()()()[]N k t f t f N a a N k T k T k k π2cos 2
010-----+
∆=∆ ()()()[]N
k t f t f N b b N k T k T k k π
2sin
2010-----+∆=∆ 5.2-=k 发生故障,初值=0。
2-=k 为故障后的第1点。
稳态量全波傅氏算法
启动前预计算2个点,启动后进入故障处理程序,接着计算第3点……一直递推下去。
具体算法:令,故障前一个周波的全波傅氏计算值作为初值。
预递推2个点,第3点在启动后递推。
()()[]N k t f t f N a a N k T k T k k π2cos 2
1---+
= ()()[]N k t f t f N b b N k T k T k k π
2sin
21---+=
可见,变化量与稳态量计算公式完全一样,仅仅是初值不同而已!故障前一个周波的采样值是必须记忆的,假设故障前一个周波的变化量为零,而稳态量是实际值。
递推的傅里叶算法计算变化量的好处在于,在相量形成的过程中,随时间推移逐渐逼近满窗逐渐准确。
动作特性的裕度也随之逐渐减小直至为零。
123024232225
采样点
递推公式:
()()()()25
252
1
241
t f t f t f t f i k
i k
-=-∑∑==,()()()()24
2525
25
2
1
252
-=-=-+=∑∑t
f t f t f t f i k i k。