傅里叶分析
时域分析从信号幅值和波形参数上分析了不同状态下各类信号的特点,傅里叶分析将信号从时域变换到频域,在频域信号的
里,我们可以看出信号的另一面,如信号的峰值频率,有无谐频等,主要能量的频带分布等。
傅里叶分析是由法国科学家让·巴普蒂斯·约瑟夫·傅立叶于19世纪提出对的分析方法,其核心思想是任意满足狄利赫里条件
的周期函数都可以展开成傅里叶级数。
1.1 傅里叶级数
傅里叶级数的三角函数展开式:
令f(t)为周期为T的周期函数,令
( 11)
其中基频w = 2pi*f = 2pi/T,表示组成f(t)的正弦、余弦函数中最小的频率。当周期T趋于无穷大时,w=dw,离散变连续
余弦三要素:幅值Ak,周期kw,相位 。傅里叶系数:a0,ak,bk。k=1,2,3...
a0为直流分量,
基波。 其频率和非正弦周期波的一样。
二次谐波
k次谐波
的推导:
令式(1-1)两边从[-T/2,T/2]积分得:
因为三角函数在整数个周期内的积分为0,即
,所以:
(12)
由上式可知, 是函数分f(t)在区间[-T/2,T/2]上的平均值,即为非正弦周期函数的直流分量。
的推导:
令式(3-1-1)两边乘cos(kwt),然后从[-T/2,T/2]积分得:
积化和差公式:
因为:
,通过和差化积公式或者由三角函数的正交性可知
,所以:
即:
的推导:
令式(1-1)两边乘sin(kwt),然后从[-T/2,T/2]积分得:
因为:
,
,所以:
即:
(14)
傅里叶级数的复指数展开式:
由欧拉公式可得:
所以:
将以上两式带入(1-1):
带入得:
所以:
令:
其中Ck与C-k共轭,所以:
所以:
又因为
,
,且
,所以:
令Ck中的k=0,则
,由(1-2)可知,
所以:
(15)
式(1-5)为傅里叶级数的复指数展开式, (16)中的Ck是即为信号f(t)的频谱,不同的k取值表示不同的频率分量
若f(t)为偶函数,Ck的虚部对积分无贡献。若f(t)为奇函数,Ck的实部全为0。如若不懂,推导即可。
(16)
1.2 离散傅里叶变换DFT
由傅里叶级数可知,当f(t)为周期函数且其周期为T0时,f(t)可以由角频率为W0=(2π/T0)的及其倍频的三角级数表示。
当k = 0时,
表示f(t)的直流分量,k取非零整数时,
表示Wk=k*W0频率的级数分量。因为:
即:
所以Wk=W0时,其T0是各频率Wk三角级数周期Tk中最大的,因此信号的周期长度T0,决定了f(t)级数表示的基频。
为什么周期等于频率的倒数?周期T等于发生一次规律变换的时间,频率f等于单位时间内发生规律变化的次数。
式(1-6)中的Ck是连续函数f(t)的积分,但是实际处理的信号是采样后的数字信号,是离散的;因此无法直接用式(1-5)和
式(1-6)直接计算离散的数字信号的频谱。
连续信号x(t)离散采样后得到x(n*△t),其中n表示第n个采样点,△t表示信号采样间隔时间,其大小为采样频率Fs的倒数,即:
令x(n*△t)的长度为N,即n=0,1,2,···N-1。则信号x(t)的基频周期为: T0=(N)*△t。则式(1-6)可以进行一下处理:
将 从求和项中移到前项的分式得:
将w0用2π/T0= 2π/(N*△t)替换得:
Ck即为离散函数x(t)的复数频谱。式(1-8)即为离散周期函数x(t)的离散傅里叶变换
由式(1-7):
则x(t)的离散形式表示为:
式(1-9)即为离散周期函数x(t)的级数表示,称为x(t)的离散傅里叶逆变换。
离散傅里叶变换的实现
由式(1-8):
所以:
DFT计算结果的特点:
(1)因为 与 共轭,所以 与 的幅值相等;
(2)因为Ck=1/2(ak-jbk),所以Ck的幅值为其k频率分量幅值的一半。因此,在绘制x(t)的频谱时,需要将Ck的幅值乘2才能
正确表示出k频率分量处的三角函数分量的幅值。
(3)因为N个数据求出的是N个复数(包括N个实数和N个虚数),所以频谱中有一半的数据是冗余的,只看前一半即可。
DFT程序:
f1=300;
f2=400;
fai1=pi/3;fai2=pi/4;
dFs=2^10;
T=1.7;%
t=0:1/dFs:T;N=length(t);
x=100*cos(2*pi*f1*t+fai1)+50*sin(2*pi*f2*t+fai2)+5*randn(1,N);%两个谐波加上一个幅值为10高斯白噪声
% N=length(t);
vecN=0:1:N-1;
vecK=vecN';
tic;
matixexp=exp(-(2*pi/N)*1i*vecK*vecN);
xk=(matixexp*x')/(N);%归一化
toc;%tic和toc表示中间两步计算的时间
deltaF=1/T;
% vecf=0:N-1;
vecf=(0:N-1)*deltaF;%使频率与幅值一一对应
subplot(3,1,1);plot(t,x);title('信号')
subplot(3,1,2);plot(vecf,abs(xk));title('离散傅里叶变换')%观察到幅值是x幅值的一半,可以从复指数级数考虑
subplot(3,1,3);plot(vecf,angle(xk));title('相位图')%显示相位;