Matlab的信号频谱分析——FFT变换 Matlab的信号频谱分析——FFT变换 Matlab的信号频谱分析 FFT是离散傅立叶变换的快速算法,可以将一个时域信号变换到频域。 有些信号在时域上是很难看出什么特征的。但是如果变换到频域之后,就很容易看出特征了。 这就是很多信号分析采用FFT变换的原因。 另外,FFT可以将一个信号的频谱提取出来,这在频谱分析方面也是经常用的。 通俗点说FFT就是将一个信号解析成是由不同频率、幅值,相位的正弦波叠加而成的。 fft 函数出来的是个复数,每一个点分实部虚部两部分。假设采用1024点 fft,采样频率是 fs,那么第一个点对应 0 频率点,第512点对应的就是 fs/2 的频率点。然后从头开始找模值最大的那个点,其所对应的频率值应该就是你要的基波频率了。 【一个模拟信号,经过ADC采样之后,就变成了数字信号。根据采样定理,采样频率要大于信号频率的两倍。采样得到的数字信号,就可以做FFT变换了。N个采样点,经过FFT之后,就可以得到N个点的FFT结果。为了方便进行FFT运算,通常N取2的整数次方。】 fft 快速傅里叶变换 语法 描述 FFT变换的步骤: 1、对模拟信号离散化 一个模拟信号,经过ADC采样之后,就变成了离散的数字信号。 2、采样频率(Fs)的选取 根据采样定理,采样频率需大于信号频率的两倍(一般取2.5~3)。 3、采样点数( N )的选取 在FFT变换中,输入N个采样点,就有N个变换结果,每个结果都是一个复数。 每个结果都和上面所说的一个正弦信号的频率、幅值,相位对应。 复数的幅值和正弦信号的幅值对应,相位和相位对应。 而其频率的对应关系为:假设第n个结果,则其对应的频率为 Fn = (n-1)*Fs/N 。 Fs/N为分辨率,例如采样频率Fs 为 1024Hz,采样点数为 1024点, 则每个结果以 1HZ 的频率步长递增。如果采样频率Fs 为 1024Hz,采样点数为 2048点, 则每个结果以 0.5HZ 的频率步长递增。我们讲其分辨率为 0.5HZ。 如果要提高频率分辨力,则必须增加采样点数,也即采样时间。 频率分辨率和采样时间是倒数关系。 注意:为了方便进行FFT运算,通常N取2的整数次方。 频率分辨率和采样时间是倒数关系。假设FFT之后某点 n 用复数 a+bi 表示,那么这个复数的模就是
,相位就是
。根据以上的结果,就可以计算出 n点(n≠1,且n<=N/2)对应的信号的表达式为:
,即
。对于 n=1 点的信号,是直流分量,幅度即为 A1/N。由于FFT结果的对称性,通常我们只使用前半部分的结果,即小于采样频率一半的结果。 例:假设我们有一个信号,它含有一个2V的直流分量,一个频率为50Hz、相位为-30度、幅度为3V的交流信号,以及一个频率为75Hz、相位为90度、幅度为1.5V的交流信号。 用数学表达式就是如下:
式中,cos 参数为弧度,所以-30度和90度要分别换算成弧度。 我们以256Hz的采样率对这个信号进行采样,总共采样256点。 按照我们上面的分析,Fn=(n-1)*Fs/N,我们可以知道,每两个点之间的间距就是1Hz,第 n个点的频率就是 n-1。我们的信号有 3个频率:0Hz、50Hz、75Hz,应该分别在第 1个点、第 51个点、第 76个点上出现峰值,其它各点应该接近0。 实际情况如何呢? 我们来看看FFT的结果的模值如下图所示:
很明显,1点、51点、76点的值都比较大,它附近的点值都很小,可以认为是 0,即在那些频率点上的信号幅度为 0。接着,我们来计算各点的幅度值。分别计算这三个点的模值,结果如下: 1点: 51251点:38476点:192 按照公式,可以计算出直流分量为:512/N = 512/256 = 2;50Hz信号的幅度为:384/(N/2) = 384/(256/2) = 3;75Hz信号的幅度为192/(N/2) = 192/(256/2) = 1.5。可见,从频谱分析出来的幅度是正确的。 Matlab 程序如下:
总结 总结:假设采样频率为Fs,采样点数为N,做N点FFT之后,某一点n(n从1开始)表示的频率为:Fn=(n-1)*Fs/N;该点的模值除以 N/2 就是对应该频率下的信号的幅度(对于直流信号是除以N);该点的相位即是对应该频率下的信号的相位。相位的计算可用函数 atan2(b,a) 计算。atan2(b,a) 是求坐标为(a,b)点的角度值,范围从 -pi 到 pi 。要精确到 xHz,则需要采样长度为1/x秒的信号,并做FFT。要提高频率分辨率,就需要增加采样点数,这在一些实际的应用中是不现实的,需要在较短的时间内完成分析。解决这个问题的方法有频率细分法,比较简单的方法是采样比较短时间的信号,然后在后面补充一定数量的0,使其长度达到需要的点数,再做FFT,这在一定程度上能够提高频率分辨力。 实例: 例:某信号由3个正弦信号组成,频率分辨率分别为1Hz、2.5Hz、3Hz,采样频率为10Hz。分别以N=20、40、128来分析该信号。
从图中可以看出, 当N=20点时,虽然2.5Hz和3Hz这两个峰值大致能分开,但还是不太明显,可以认为是两个峰值,也可能被误认为有一个峰值在这两点之间。 当N=40时这两个峰值十分明显了,因为N增加一倍后在这两点之间增加了一个谷值,从而突出了峰值。 而当N=128时峰值更明显了,但是由于栅栏现象和矩形窗泄露存在,3个正弦信号虽然输入幅值相同,但从频域上反映出的幅值各不相同。
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/71402.html