python 频谱图,qt 频谱
FFT是离散傅立叶变换的快速算法,可以对信号进行变换。
到频域。尽管一些信号难以在时域中识别任何特征,例如
转换到频域后,特征变得容易理解。这是很多信号。
分析了采用FFT变换的原因。此外,FFT表示信号的频谱。
摘录。这也是光谱分析中常用的方法。
虽然很多人都知道FFT是什么,能做什么,怎么做到的。
然而,FFT后的结果意味着什么呢?不知道怎么决定用。
你什么时候做FFT?
现在,静羽将根据实际经验讲述FFT结果的具体物理意义。
模拟信号经ADC采样后成为数字信号。随机突击检查
该定理表明采样频率大于信号频率的两倍。这些我.
不要在这里唠叨。
采样的数字信号可以通过FFT变换。n个采样点,
FFT后,可以得到n个点的FFT结果。为了简化FFT
通常,n是2的整数次方。
设采样频率为Fs,信号频率为f,采样点数为n,则FFT
结果可以得到n点的复数。每个点对应一个频率。
关键点。这个点的本征值就是其频率值的幅度特性。具体来说,原始的和
信号宽度有什么关系?设原始信号的峰值为A,然后FFT
结果中每一点(除了第一点的DC分量)的模都是a
一半时间。第一点是DC分量,其模值是DC分量。
n次。每个点的相位就是该频率下信号的相位。
第一个点代表DC分量,即0Hz,最后一个点n的下一个点
点(其实这是不存在的。这是假设点N 1,也是
可以认为第一个点分一半,另一半最后移动)
采样频率Fs,其中间在N-1点被N等分,以及每个点的频率
依次增加。例如,点n代表的频率为fn=(n-1) * fs/n。
从上式可以看出,Fn能够识别的频率为FS/N,如果
如果采样频率Fs为1024Hz,采样点数为1024,则可以识别1Hz。
1024Hz的采样率采样1024个点,正好是1秒,也就是1秒。
如果对的时间信号执行FFT,结果可以分析到1Hz,如果采样为2秒。
FFT之后,结果可以分析到0.5Hz。要提高频率
分辨率需要增加采样点数,也就是采样时间。频率分辨率和
采样时间是倒数。
如果FFT后的点n用复数a bi表示,则复数的类型为
An=根号a*a b*b,相位为pn=Atan2(b,a)。根据上述结果,
可以计算对应于N点1和n=N/2)的信号的公式如下。
An/(n/2) cos )2*pi*fn*tpn(即2*an/n*cos )2*pi*fn*tpn)。
对于n=1点的信号,是宽度为a1/n的直流分量。
由于FFT结果的对称性,通常只使用前半部分的结果。
即少于一半采样频率的结果。
然后说了半天,看着公式晕过去了,下面平静的羽毛变成了实际。
用信号解释。
包含频率为50Hz的2V直流分量,
相位为-30度、振幅为3V、频率为75Hz交流信号,
相位为90度、宽度为1.5V的交流信号,公式如下。
s=23 * cos(2 * pi * 50 * t-pi * 30/180)1.5 * cos(2 * pi * 75 * TPI * 90/180))
公式中的cos参数是弧度,所以-30度和90度必须分别换算成弧度。
以256Hz的采样率对信号进行采样,总共采样了256个点。
根据以上分析,fn=(n-1) *Fs/N每两个
点与点之间的间隔是1Hz,第n个点的频率是n-1。我们的信号
有三个频率:0Hz,50Hz,75Hz,分别是第一点,第五十一点,
76点有一个峰值,其他点应该接近0。实际情况如何?
看FFT结果的幅度。
图1 FFT结果
从图中可以看出,在第1、51和76点附近
一个比较大的值。仔细看看这三点周围的数据。
1: 512 0i
2: -2.6195E-14-1.4162E-13i
3: -2.8586E-14-1.1898E-13i
0: 00: -6.2076E-13-2.1713E-12i
1: 00: 332.55-192i
2: 00: -1.6707E-12-1.5241E-12i
在0500时:-2.2199E-13 -1.0076E-12i
0600小时:3.4315E-12 192i
7: 00: -3.0263E-14 7
5609E-13i
显然,价值观
都很小,可以认为是0,也就是那些频率点的信号幅度为0。
接下来,我们来计算每个点的振幅。分别计算这三个点的模值,
结果如下:
1: 512
1: 00: 384
6: 00: 192
根据公式,DC分量可以计算如下:512/n=512/256=2;
50Hz信号的幅度为:384/(n/2)=384/(256/2)=3;75Hz信号
幅度为192/(N/2)=192/(256/2)=1.5。从光谱分析可以看出。
振幅正确。
然后计算相位信息。DC信号没有相位,所以不用担心。
它。先计算50Hz信号的相位,atan2(-192,332.55)=-0.5236,
结果是弧度,换算成角度就是180 *(0.5236)/pi=-30.0001。又
计算75Hz信号的相位,atan2(192,3.4315E-12)=1.5708弧度,
角度为180*1.5708/pi=90.0002。可见相也是对的。
根据FFT结果和上述分析计算,我们可以写出信号表达式。
类型,是我们开始提供的信号。
总结:假设采样频率为Fs,采样点数为N,FFT后,a
点n(n从1开始)表示的频率为:fn=(n-1)* fs/n;该点的模数值
除以N/2是对应于该频率的信号的幅度(对于DC信号除以
n);这个点的相位就是对应于这个频率的信号的相位。相位计算
可以通过函数atan2(b,a)来计算。Atan2(b,a)是坐标为(a,b)的点的角度
度,范围从-到。为了精确到xHz,采样长度需要为1/x秒。
发信号,做FFT。为了提高频率分辨率,有必要增加采样点的数量,
这在一些实际应用中是不现实的,需要在短时间内完成。
分析。解决这个问题的方法是频率细分,更简单的方法是
对信号进行短时间采样,然后添加一定数量的零使其变长。
达到要求的点数,再进行FFT,可以在一定程度上提高频率分辨率。
具体的频率细分方法可以参考相关文献。
[附录:用于此测试数据的matlab程序]
全部关闭;%首先关闭所有图片。
ADC=2;% DC分量振幅
a1=3;%频率F1信号的振幅
A2=1.5%频率F2信号的振幅
F1=50%信号1频率(赫兹)
F2=75%信号2频率(赫兹)
Fs=256%采样频率(赫兹)
P1=-30;%信号1相位(度)
P2=90;%信号相位(度)
N=256%采样点
t=[0:1/Fs:N/Fs];%采样时间
%信号
s=Adc A1 * cos(2 * pi * F1 * t pi * P1/180)A2 * cos(2 * pi * F2 * t pi * P2/180);
%显示原始信号
情节;
标题(“原始信号”);
图;
Y=fft(S,N);%进行FFT变换
ayy=(ABS(Y));%取模
plot(Ayy(1:N));%显示原始FFT模数结果。
标题( FFT模数);
图;
Ayy=Ayy/(N/2);%转换成实际振幅。
Ayy(1)=Ayy(1)/2;
f=([1:N]-1)* Fs/N;%转换成实际频率值。
plot(F(1:N/2),Ayy(1:N/2));%显示转换后的FFT模数结果。
标题(幅频曲线);
图;
pyy=[1:N/2];
因为i=1:N/2
pyy(I)=相位(Y(I));%计算阶段
Pyy(I)=Pyy(I)* 180/pi;%转换成角度
结束;
plot(F(1:N/2),Pyy(1:N/2));%显示相位图
标题(“相位-频率曲线”);
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。