关于FFT的一些

时间:2021-02-26 01:34:10

对看过的一些资料整理,以免忘记

下面是FFT的一些

         FFT(Fast Fourier Transform,快速傅立叶变换)是离散傅立叶变换的快速算法,也是我们在数字信号处理技术中经常会提到的一个概念。在大学的理工科课程中,在完成高等数学的课程后,数字信号处理一般会作为通信电子类专业的专业基础课程进行学习,原因是其中涉及了大量的高等数学的理论推导,同时又是各类应用技术的理论基础。

        关于傅立叶变换的经典著作和文章非常多,但是看到满篇的复杂公式推导和罗列,我们还是很难从直观上去理解这一复杂的概念,我想对于普通的测试工程师来说,掌握FFT的概念首先应该搞清楚这样几个问题:(1) 为什么需要FFT  (2) 变换究竟是如何进行的 (3) 变换前后信号有何种对应关系(4) 在使用测试工具(示波器或者其它软件平台)进行FFT的方法和需要注意的问题  (5) 力科示波器与泰克示波器的FFT计算方法的比较。

        在这篇文章中我尝试用更加浅显的讲解,尽量不使用公式推导来说一说FFT的那些事儿。

一, 为什么需要FFT?

        首先FFT(快速傅立叶变换)是离散傅立叶变换的快速算法,那么说到FFT,我们自然要先讲清楚傅立叶变换。先来看看傅立叶变换是从哪里来的?

        傅立叶是一位法国数学家和物理学家的名字,英语原名是Jean Baptiste Joseph Fourier(1768-1830), Fourier对热传递很感兴趣,于1807年在法国科学学会上发表了一篇论文,运用正弦曲线来描述温度分布,论文里有个在当时颇具争议性的命题:任何连续周期信号可以由一组适当的正弦曲线组合而成。当时审查这个论文的人,其中有两位是历史上著名的数学家拉格朗日(Joseph Louis Lagrange, 1736-1813)和拉普拉斯(Pierre Simon de
Laplace, 1749-1827),当拉普拉斯和其他审查者投票通过并要发表这个论文时,拉格朗日坚决反对,在近50年的时间里,拉格朗日坚持认为傅立叶的方法无法表示带有棱角的信号,如在方波中出现非连续变化斜率。法国科学学会屈服于拉格朗日的权威,拒绝了傅立叶的工作,幸运的是,傅立叶还有其它事情可忙,他参加了政治运动,随拿破仑远征埃及,法国大革命后因为怕被推上断头台而一直在逃难。直到拉格朗日死后15年这个论文才被发表出来。

        谁是对的呢?拉格朗日是对的:正弦曲线无法组合成一个带有棱角的信号。但是,我们可以用正弦曲线来非常逼近地表示它,逼近到两种表示方法不存在能量差别,基于此,傅立叶是对的。

        为什么我们要用正弦曲线来代替原来的曲线呢?如我们也还可以用方波或三角波来代替,分解信号的方法是无穷的,但分解信号的目的是为了更加简单地处理原来的信号。用正余弦来表示原信号会更加简单,因为正余弦拥有其他信号所不具备的性质:正弦曲线保真度。一个正弦曲线信号输入后,输出的仍是正弦曲线,只有幅度和相位可能发生变化,但是频率和波的形状仍是一样的,且只有正弦曲线才拥有这样的性质,正因如此我们才不用方波或三角波来表示。

 傅立叶变换的物理意义在哪里?

        傅立叶原理表明:任何连续测量的时序或信号,都可以表示为不同频率的正弦波信号的无限叠加。而根据该原理创立的傅立叶变换算法利用直接测量到的原始信号,以累加方式来计算该信号中不同正弦波信号的频率、振幅和相位。当然这是从数学的角度去看傅立叶变换。

        那么从物理的角度去看待傅立叶变换,它其实是帮助我们改变传统的时间域分析信号的方法转到从频率域分析问题的思维,下面的一幅立体图形可以帮助我们更好得理解这种角度的转换:

关于FFT的一些


        所以,最前面的时域信号在经过傅立叶变换的分解之后,变为了不同正弦波信号的叠加,我们再去分析这些正弦波的频率,可以将一个信号变换到频域。有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征了。这就是很多信号分析采用FFT变换的原因。另外,FFT可以将一个信号的频谱提取出来,这在频谱分析方面也是经常用的。

         傅立叶变换提供给我们这种换一个角度看问题的工具,看问题的角度不同了,问题也许就迎刃而解!

二、 变换是如何进行的?

         首先,按照被变换的输入信号类型不同,傅立叶变换可以分为 4种类型:
         1、 非周期性连续信号傅立叶变换(Fourier Transform)
         2、 周期性连续信号傅立叶级数(Fourier Series)
         3、 非周期性离散信号离散时域傅立叶变换(Discrete Time Fourier Transform)
         4、 周期性离散信号离散傅立叶变换(Discrete Fourier Transform)

下面是四种原信号图例:

关于FFT的一些

        这里我们要讨论是离散信号,对于连续信号我们不作讨论,因为计算机只能处理离散的数值信号,我们的最终目的是运用计算机来处理信号的。所以对于离散信号的变换只有离散傅立叶变换(DFT)才能被适用,对于计算机来说只有离散的和有限长度的数据才能被处理,对于其它的变换类型只有在数学演算中才能用到,在计算机面前我们只能用DFT方法,我们要讨论的FFT也只不过是DFT的一种快速的算法。

DFT的运算过程是这样的:
关于FFT的一些
其中,
X(k)—频域值
X(n)—时域采样点
n—时域采样点的序列索引
k—频域值的索引
N—进行转换的采样点数量

        可见,在计算机或者示波器上进行的DFT,使用的输入值是数字示波器经过ADC后采集到的采样值,也就是时域的信号值,输入采样点的数量决定了转换的计算规模。变换后的频谱输出包含同样数量的采样点,但是其中有一半的值是冗余的,通常不会显示在频谱中,所以真正有用的信息是N/2+1个点。

        FFT的过程大大简化了在计算机中进行DFT的过程,简单来说,如果原来计算DFT的复杂度是N2次运算(N代表输入采样点的数量),进行FFT的运算复杂度是Nlg10(N),因此,计算一个1,000采样点的DFT,使用FFT算法只需要计算3,000次,而常规的DFT算法需要计算1,000,000次!

        我们以一个4个点的DFT变换为例来简单说明FFT是怎样实现快速算法的:
关于FFT的一些
 
计算得出:
 关于FFT的一些
其中的红色部分在FFT中是必须计算的分量,其他蓝色部分不需要直接计算,可以由红色的分量直接推导得到,比如:
x(1)e-j0 = -1*x(1)e-jπ
x(2)e-j0 = x(2)e-j2π
… …
这样,已经计算出的红色分量只需要计算机将结果保存下来用于之后计算时调用即可,因此大大减少了DFT的计算量。

三、 变换前后信号有何种对应关系?

        我们以一个实际的信号为例来说明:

        示波器采样得到的数字信号,就可以做FFT变换了。N个采样点,经过FFT之后,就可以得到N个点的FFT结果。为了方便进行FFT运算,通常N取2的整数次方。

        假设采样频率为Fs,信号频率F,采样点数为N。那么FFT之后结果就是一个为N点的复数。每一个点就对应着一个频率点。这个点的模值,就是该频率值下的幅度特性。具体跟原始信号的幅度有什么关系呢?假设原始信号的峰值为A,那么FFT的结果的每个点(除了第一个点直流分量之外)的模值就是A的N/2倍。而第一个点就是直流分量,它的模值就是直流分量的N倍。而每个点的相位呢,就是在该频率下的信号的相位。第一个点表示直流分量(即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的一些

        变换之后的频谱的宽度(Frequency Span)与原始信号也存在一定的对应关系。根据Nyquist采样定理,FFT之后的频谱宽度(Frequency Span)最大只能是原始信号采样率的1/2,如果原始信号采样率是4GS/s,那么FFT之后的频宽最多只能是2GHz。时域信号采样周期(Sample Period)的倒数,即采样率(Sample Rate)乘上一个固定的系数即是变换之后频谱的宽度,即 Frequency Span = K*(1/ΔT),其中ΔT为采样周期,K值取决于我们在进行FFT之前是否对原始信号进行降采样(抽点),因为这样可以降低FFT的运算量。如下图所示:
  关于FFT的一些

        可见,更高的频谱分辨率要求有更长的采样时间,更宽的频谱分布需要提高对于原始信号的采样率,当然我们希望频谱更宽,分辨率更精确,那么示波器的长存储就是必要的!它能提供您在高采样率下采集更长时间信号的能力!值得强调的是,力科示波器可以支持计算128Mpts的FFT,而其它某品牌则只有3.2Mpts。

四、 在使用测试工具(示波器或者其它软件平台)进行FFT的方法和需要注意的问题?

        我们先来看一个简单的例子---
Problem:在示波器上采集一个连续的,周期性的信号,我们希望在示波器上进行FFT计算之后,观察到信号中心频率(Center Frequency)在2.48GHz,频宽(Frequency Span)为5MHz,频谱分辨率(Bandwidth Resolution)为10KHz的频谱图,应该如何设置示波器的采集?

        首先,根据频谱分辨率(Bandwidth Resolution)10KHz可以推算出,至少需要采集信号的时间长度为 1/10KHz=100us,因此至少要设置示波器时基为10us/Div;为了尽量保证FFT之后频谱图在各个频点的信号能量精度,测量时需要时域信号幅值占满整个栅格的90%以上;采样率设置应至少满足Nyquist采样率,即至少设置 >5GS/s采样率才能够看到中心频率在2.48GHz的频率谱线;选择合适的窗函数(Von Hann汉宁窗)和频谱显示方式(power spectrum);使用Zoom工具,将频谱移动到Center
2.48GHz,Scale 500KHz/Div 位置,Zoom设置方法如下图所示:

  关于FFT的一些

在力科示波器中进行FFT的运算有几种不同的输出类型:
Linear Magnitude(Volts),
Phase(Degrees),
Power Spectrum(dBm),
Power Spectral Density(dBm)
这几种输出类型都是由FFT计算之后的结果换算而来,我们知道FFT计算之后的结果包含实部(Real)和虚部(Imaginary)成分,它们的单位都是Volts。
具体的换算方式如下:
Linear Magnitude(Volts)= 关于FFT的一些
Phase(Degrees)= 关于FFT的一些
Power Spectrum(dBm)= 关于FFT的一些
Power Spectral Density(dBm)= 关于FFT的一些,其中关于FFT的一些
为频谱分辨率,ENBW为与所选加权函数(窗)相关的有效噪声带宽。

几种典型周期函数的频谱图:

  关于FFT的一些

频谱泄露:

        所谓频谱泄露,就是信号频谱中各谱线之间相互干扰,使测量的结果偏离实际值,同时在真实谱线的两侧的其它频率点上出现一些幅值较小的假谱。产生频谱泄露的主要原因是采样频率和原始信号频率不同步,造成周期的采样信号的相位在始端和终端不连续。简单来说就是因为计算机的FFT运算能力有限,只能处理有限点数的FFT,所以在截取时域的周期信号时,没有能够截取整数倍的周期。信号分析时不可能取无限大的样本。只要有截断不同步就会有泄露。如下图所示:

 关于FFT的一些

        图中被测信号的开始端相位和截止端相位相同,表示在采集时间内有整数倍周期的信号被采集到,所以此时经行FFT运算后得出的频谱不会出现泄露。

 关于FFT的一些

        上图的信号频率为2.1MHz,采集时间内没有截取整数倍周期的信号,FFT运算之后谱线的泄露现象严重,可以看到能量较低的谱线很容易被临近的能量较高的谱线的泄露给淹没住。

         因此,避免频谱泄露的方法除了尽量使采集速率与信号频率同步之外,还可以采用适当的窗函数。

         另外一个方法是采集信号时间足够长,基本上可以覆盖到整个有效信号的时间跨度。这种方法经常在瞬态捕捉中被使用到,比如说冲击试验,如果捕捉的时间够长,捕捉到的信号可以一直包括了振动衰减为零的时刻。在这种情况下,可以不加窗函数。

窗函数其实就是一个加权函数,它在截取的信号时间段内有值,时间段之外值为0:,记为:
w(t)=g(t)       -T/2<t<T/2
w(t)=0          其它

        加窗在时域上表现的是点乘,因此在频域上则表现为卷积。卷积可以被看成是一个平滑的过程。这个平滑过程可以被看出是由一组具有特定函数形状的滤波器,因此,原始信号中在某一频率点上的能量会结合滤波器的形状表现出来,从而减小泄漏。基于这个原理,人们通常在时域上直接加窗。
大多数的信号分析仪一般使用矩形窗(rectangular),汉宁(hann),flattop和其它的一些窗函数。

        不同的窗函数对频谱谱线的影响不同,基本形状可以参看下图:

关于FFT的一些

        可以看到,不同的窗函数的主瓣宽度和旁瓣的衰减速度都不一样,所以对于不同信号的频谱应该使用适当的窗函数进行处理。

         矩形窗(Rectangular):加矩形窗等于不加窗,因为在截取时域信号时本身就是采用矩形截取,所以矩形窗适用于瞬态变化的信号,只要采集的时间足够长,信号宽度基本可以覆盖整个有效的瞬态部分。

         汉宁窗(Von Hann):如果测试信号有多个频率分量,频谱表现的十分复杂,且测试的目的更多关注频率点而非能量的大小。在这种情况下,需要选择一个主瓣够窄的窗函数,汉宁窗是一个很好的选择。

         flattop窗:如果测试的目的更多的关注某周期信号频率点的能量值,比如,更关心其EUpeak,EUpeak-peak,EUrms,那么其幅度的准确性则更加的重要,可以选择一个主瓣稍宽的窗,flattop窗在这样的情况下经常被使用。

五、力科示波器与泰克示波器的FFT计算方法的比较

        您可能也已经发现了这个问题:在示波器上进行FFT运算时,使用力科示波器和使用Tek示波器的计算结果似乎相差很大。产生这种差别的原因一方面可能是两者有效运算的采样点不一样。另外一个重要原因是LeCroy和Tek所使用的FFT运算的参考值不同,LeCroy使用dBm为单位(参考值是1mW的功率值),而Tek使用dB为单位(参考值是1V rms的电压值),参考值不同产生的计算结果当然不一样!

        dB(Deci-bel,分贝) 是一个纯计数单位,本意是表示两个量的比值大小,没有单位。 在工程应用中经常看到貌似不同的定义方式(仅仅是看上去不同)。对于功率,dB = 10*lg(A/B)。对于电压或电流,dB = 20*lg(A/B)。此处A,B代表参与比较的功率值或者电流、电压值。 dB的意义其实再简单不过了,就是把一个很大(后面跟一长串0的)或者很小(前面有一长串0的)的数比较简短地表示出来。

dBm是一个考征功率绝对值的值,计算公式为:10lg(功率值/1mw)。

此外,还有dBV、dBuV、dBW等等,仅仅是参考值选择的不同而已。

这里推荐一个工具网站,可以在不同的比较值之间进行转换:
http://www.giangrandi.ch/electronics/anttool/decibel.html

如下是一个实测的例子,使用同一信号分别用LeCroy和Tek示波器进行FFT运算

 关于FFT的一些


  使用LeCroy WaveRunner 64Xi的测试结果
     

关于FFT的一些

  使用Tek DPO4104的测试结果

所使用的信号幅值是 6.55 mV rms , 信号频率是 25 MHz

力科使用的计算方式如下:
dBm= 10 Log10 (((vrms^2)/50)/0.001)= 10Log10 ((4.29E-5/50)/0.001)= 10Log10(8.5E-7/0.001)=10Log10 (8.5e-4)=10 (-3.066)= -30.66dBm

Tek使用的计算方式如下:
dB= 20Lg (6.61E-3)= 10(-4.3596)=-43.59

换算关系如下: 关于FFT的一些
         不仅仅只是FFT计算方式的差别,我们以力科的WaveMaster 8Zi-A和Tek的DPO70000系列为例,在WaveMaster上您可以做最多128M个采样点的FFT运算,而在DPO70000上只能做3.2M个点的FFT运算,所以,这种差别才是本质上的!

FFT是离散傅立叶变换的快速算法,可以将一个信号变换到频域。有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征了。这就是很多信号分析采用FFT变换的原因。另外,FFT可以将一个信号的频谱提取出来,这在频谱分析方面也是经常用的。

  虽然很多人都知道FFT是什么,可以用来做什么,怎么去做,但是却不知道FFT之后的结果是什意思、如何决定要使用多少点来做FFT。

  现在我就根据实际经验来说说FFT结果的具体物理意义。一个模拟信号,经过ADC采样之后,就变成了数字信号。采样定理告诉我们,采样频率要大于信号最高频率的两倍,这些我就不在此罗嗦了。

  采样得到的数字信号,就可以做FFT变换了。N个采样点,经过FFT之后,就可以得到N个点的FFT结果。为了方便进行FFT运算,通常N取2的整数次方(参见FFT原理)。FFT运算量:Nlog2N(2为对数的底)。

  假设采样频率为Fs,信号频率F,采样点数为N。那么FFT之后结果就是一个为N点的复数。每一个点就对应着一个频率点。这个点的模值,就是该频率值下的幅度特性。具体跟原始信号的幅度有什么关系呢?假设原始信号的峰值为A,那么FFT的结果的每个点(除了第一个点直流分量之外)的模值就是A的N/2倍。而第一个点就是直流分量,它的模值就是直流分量的N倍。而每个点的相位呢,就是在该频率下的信号的相位。第一个点表示直流分量(即0Hz),而最后一个点N的再下一个点(实际上这个点是不存在的,这里是假设的第N+1个点,也可以看做是将第一个点分做两半分,另一半移到最后)则表示采样频率Fs,这中间被N-1个点平均分成N等份,每个点的频率依次增加。例如某点n所表示的频率为:Fn=(n-1)*Fs/N。由上面的公式可以看出,Fn所能分辨到频率F0=Fs/N。假设频率分辨率F0=Fs/N限定,采样频率Fs也给定,也已知信号最高频率Fh,那么由采样定理:Fs》=2Fh得到:N=Fs/F0>=2Fh/F0,即采样点必须满足这样一个关系式。

  如果采样频率Fs为1024Hz,采样点数为1024点,则可以分辨到1Hz。1024Hz的采样率采样1024点,刚好是1秒,也就是说,采样1秒时间的信号并做FFT,则结果可以分析到1Hz,如果采样2秒时间的信号并做FFT,相应的采样点也为原来2倍,则结果可以分析到0.5Hz。如果要提高频率分辨力,则必须增加采样点数,也即延长采样时间,所以频率分辨率和采样时间是倒数关系,就是说,要想分辨出频率间隔越小的频率(频率分辨率越高),采样时间越长越好。
假设FFT之后某点n用复数a+bi表示,那么这个复数的模就是An=根号a*a+b*b,相位就是Pn=atan2(b,a)。根据以上的结果,就可以计算出n点(n≠1,且n<=N/2)对应的信号的表达式为:
    An/(N/2)*cos(2*pi*Fn*t+Pn),即2*An/N*cos(2*pi*Fn*t+Pn)。
对于n=1点的信号,是直流分量,幅度即为A1/N。
    由于FFT结果的对称性,通常我们只使用前半部分的结果,即小于采样频率一半的结果。

    好了,说了半天,看着公式也晕,下面以一个实际的信号来做说明。

    假设我们有一个信号,它含有2V的直流分量,频率为50Hz、相位为-30度、幅度为3V的交流信号,以及一个频率为75Hz、相位为90度、幅度为1.5V的交流信号。用数学表达式就是如下:

    S=2+3*cos(2*pi*50*t-pi*30/180)+1.5*cos(2*pi*75*t+pi*90/180)

    式中cos参数为弧度,所以-30度和90度要分别换算成弧度。我们以256Hz的采样率对这个信号进行采样,总共采样256点。按照我们上面的分析,Fn=(n-1)*Fs/N,我们可以知道,每两个点之间的间距就是1Hz,第n个点的频率就是n-1。我们的信号有3个频率:0Hz、50Hz、75Hz,应该分别在第1个点、第51个点、
第76个点上出现峰值,其它各点应该接近0。实际情况如何呢?我们来看看FFT的结果的模值如图所示。

关于FFT的一些

图1 FFT结果


   从图中我们可以看到,在第1点、第51点、和第76点附近有比较大的值。我们分别将这三个点附近的数据拿上来细看:
1点: 512+0i
2点: -2.6195E-14 - 1.4162E-13i
3点: -2.8586E-14 - 1.1898E-13i

50点:-6.2076E-13 - 2.1713E-12i
51点:332.55 - 192i
52点:-1.6707E-12 - 1.5241E-12i

75点:-2.2199E-13 -1.0076E-12i
76点:3.4315E-12 + 192i
77点:-3.0263E-14 +7.5609E-13i
  
    很明显,1点、51点、76点的值都比较大,它附近的点值都很小,可以认为是0,即在那些频率点上的信号幅度为0。接着,我们来计算各点的幅度值。分别计算这三个点的模值,
结果如下:
1点: 512
51点:384
76点:192
    按照公式,可以计算出直流分量为:512/N=512/256=2;50Hz信号的幅度为:384/(N/2)=384/(256/2)=3;75Hz信号的幅度为192/(N/2)=192/(256/2)=1.5。可见,从频谱分析出来的幅度是正确的。
    然后再来计算相位信息。直流信号没有相位可言,不用管它。先计算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之后,某一点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,这在一定程度上能够提高频率分辨力。具体的频率细分法可参考相关文献。

[附录:本测试数据使用的matlab程序]
close all; %先关闭所有图片
Adc=2; %直流分量幅度
A1=3;   %频率F1信号的幅度
A2=1.5; %频率F2信号的幅度
F1=50; %信号1频率(Hz)
F2=75; %信号2频率(Hz)
Fs=256; %采样频率(Hz)
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);
%显示原始信号
plot(S);
title('原始信号');

figure;
Y = fft(S,N); %做FFT变换
Ayy = (abs(Y)); %取模
plot(Ayy(1:N)); %显示原始的FFT模值结果
title('FFT 模值');

figure;
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模值结果
title('幅度-频率曲线图');

figure;
Pyy=[1:N/2];
for i=1:N/2
Pyy(i)=phase(Y(i)); %计算相位
Pyy(i)=Pyy(i)*180/pi; %换算为角度
end;
plot(F(1:N/2),Pyy(1:N/2));   %显示相位图
title('相位-频率曲线图');


转载自http://www.xuebuyuan.com/539160.html



下面是有关采样的一些

1.频率分辨率的2种解释
解释一:频率分辨率可以理解为在使用DFT时,在频率轴上的所能得到的最小频率间隔f0=fs/N=1/NTs=1/T,其中N为采样点数,fs为采样频率,Ts为采样间隔。所以NTs就是采样前模拟信号的时间长度T,所以信号长度越长,频率分辨率越好。是不是采样点数越多,频率分辨力提高了呢?其实不是的,因为一段数据拿来就确定了时间T,注意:f0=1/T,而T=NTs,增加N必然减小Ts,因此,增加N时f0是不变的。只有增加点数的同时导致增加了数据长度T才能使分辨率越好。还有容易搞混的一点,我们在做DFT时,常常在有效数据后面补零达到对频谱做某种改善的目的,我们常常认为这是增加了N,从而使频率分辨率变好了,其实不是这样的,补零并没有增加有效数据的长度,仍然为T。但是补零其实有其他好处:1.使数据N为2的整次幂,便于使用FFT。2.补零后,其实是对DFT结果做了插值,克服“栅栏”效应,使谱外观平滑化;我把“栅栏”效应形象理解为,就像站在栅栏旁边透过栅栏看外面风景,肯定有被栅栏挡住比较多风景,此时就可能漏掉较大频域分量,但是补零以后,相当于你站远了,改变了栅栏密度,风景就看的越来越清楚了。3.由于对时域数据的截短必然造成频谱泄露,因此在频谱中可能出现难以辨认的谱峰,补零在一定程度上能消除这种现象。
那么选择DFT时N参数要注意:1.由采样定理:fs>=2fh,2.频率分辨率:f0=fs/N,所以一般情况给定了fh和f0时也就限制了N范围:N>=fs/f0。


解释二:频率分辨率也可以理解为某一个算法(比如功率谱估计方法)将原信号中的两个靠得很近的谱峰依然能保持分开的能力。这是用来比较和检验不同算法性能好坏的指标。在信号系统中我们知道,宽度为N的矩形脉冲,它的频域图形为sinc函数,两个一阶零点之间的宽度为4π/N。由于时域信号的截短相当于时域信号乘了一个矩形窗函数,那么该信号的频域就等同卷积了一个sinc函数,也就是频域受到sinc函数的调制了,根据卷积的性质,因此两个信号圆周频率之差W0必须大于4π/N。从这里可以知道,如果增加数据点数N,即增加数据长度,也可以使频率分辨率变好,这一点与第一种解释是一样的。
同时,考虑到窗函数截短数据的影响存在,当然窗函数的特性也要考虑,在频率做卷积,如果窗函数的频谱是个冲击函数最好了,那不就是相当于没截断吗?可是那不可能的,我们考虑窗函数主要是以下几点:1.主瓣宽度B最小(相当于矩形窗时的4π/N,频域两个过零点间的宽度)。2.最大边瓣峰值A最小(这样旁瓣泄露小,一些高频分量损失少了)。3.边瓣谱峰渐近衰减速度D最大(同样是减少旁瓣泄露)。在此,总结几种很常用的窗函数的优缺点:

矩形窗:B=4π/NA=-13dBD=-6dB/oct

三角窗:B=8π/NA=-27dBD=-12dB/oct

汉宁窗:B=8π/NA=-32dBD=-18dB/oct

海明窗:B=8π/NA=-43dBD=-6dB/oct

布莱克曼窗:B=12π/NA=-58dBD=-18dB/oct

可以看出,矩形窗有最窄的主瓣,但是旁瓣泄露严重。汉宁窗和海明窗虽主瓣较宽,但是旁瓣泄露少,是常选用的窗函数。


2.采样周期与频率分辨率
fs/N常称作为频率分辨率,它实际是作FFT时谱图中的两条相邻谱线之间的频率间隔,也有称作步长。单位是Hz、Khz等。频率分辨率实际有二重含意,在这里只是其中一种。
1/fs的单位的s、ms、us或分、时...年等。1/fs代表采样周期,是时间域上两个相邻离散数据之间的时间差。
因此fs/N用在频率域,只在DFT以后的谱图中使用;而1/fs用时间域,只要数据经采样,离散化后任何其它的应用中都可使用。例如有的数字滤波器中就用到。
Δf=fs/N=1/T;Δf是频率采样间隔,同时也是频率分辨率的重要指标,如果这个值越小,则频率分辨率越高。1/fs往往用在求时间序列上,如(0:N-1)*1/fs等等,如果这个不好理解,可以把前面的公式求倒数,这就清楚多了


3.采样定理
采样过程所应遵循的规律,又称取样定理、抽样定理。采样定理说明采样频率与信号频谱之间的关系,是连续信号离散化的基本依据。采样定理是1928年由美国电信工程师H.奈奎斯特首先提出来的,因
此称为奈奎斯特采样定理。1933年由苏联工程师科捷利尼科夫首次用公式严格地表述这一定理,因此在苏联文献中称为科捷利尼科夫采样定理。1948年信息论的创始人C.E.香农对这一定理加以明确地说明并
正式作为定理引用,因此在许多文献中又称为香农采样定理。采样定理有许多表述形式,但最基本的表述方式是时域采样定理和频域采样定理。采样定理在数字式遥测系统、时分制遥测系统、信息处理、数
字通信和采样控制理论等领域得到广泛的应用。
时域采样定理频带为F的连续信号f(t)可用一系列离散的采样值f(t1),f(t1±Δt),f(t1±2Δ
t),...来表示,只要这些采样点的时间间隔Δt≤1/2F,便可根据各采样值完全恢复原来的信号f(t)。

关于FFT的一些

采样定理时域采样定理的另一种表述方式是:当时间信号函数f(t)的最高频率分量为fM时,f(t)的值可由一系列采样间隔小于或等于1/2fM的采样值来确定,即采样点的重复频率f≥2fM。图为模拟信号和采样样本的示意图。
时域采样定理是采样误差理论、随机变量采样理论和多变量采样理论的基础。
频域采样定理对于时间上受限制的连续信号f(t)(即当│t│>T时,f(t)=0,这里T=T2-T1是信号的持续时间),若其频谱为F(ω),则可在频域上用一系列离散的采样值来表示,只要这
些采样点的频率间隔。
参考书目
刘文生、李锦林编:《取样技术原理与应用》,科学出版社,北京,1981。

4.分析频率/采样点数/谱线数的设置要点
1.最高分析频率:Fm指需要分析的最高频率,也是经过抗混滤波后的信号最高频率。根据采样定理,Fm与采样频率Fs之间的关系一般为:Fs=2.56Fm;而最高分析频率的选取决定于设备转速和预期所要判定的故障性质。
2.采样点数N与谱线数M有如下的关系:
N=2.56M其中谱线数M与频率分辨率ΔF及最高分析频率Fm有如下的关系:ΔF=Fm/M即:M=Fm/ΔF所以:N=2.56Fm/ΔF


★采样点数的多少与要求多大的频率分辨率有关。例如:机器转速3000r/min=50Hz,如果要分析的故障频率估计在8倍频以下,要求谱图上频率分辨率ΔF=1Hz,则采样频率和采样点数设置为:
最高分析频率Fm=8•50Hz=400Hz;
采样频率Fs=2.56•Fm=2.56•400Hz=1024Hz;
采样点数N=2.56•(Fm/ΔF)=2.56•(400Hz/1Hz)=1024=210
谱线数M=N/2.56=1024/2.56=400条



下面是有关2.56的一些

  香农定理中要求采样频率至少为关心最高信号频率的2倍,但为什么工程中经常用2.56倍?本篇文章中有着详细的解答,我想大家看完这篇文章定会对大家有帮助~

  香农采样定理是这样描述的:采样频率fs至少为关心的信号最高频率的2倍。采样频率的一半称为奈奎斯特频率。采样频率的一半也称为分析带宽,或简称为带宽。

  1.混叠

  当采样频率设置不合理时,即采样频率少于2倍的信号频率时,会导致原本的高频信号被采样成低频信号,如下图所示。红色信号是原始的高频信号,但是由于采样频率不满足采样定理的要求,导致实际采样点如图中蓝色实点表示,将这些蓝色点连成曲线,可以明显的看出这是一个低频信号。在图示的时间长度内,红色信号有18个周期,但采样后的蓝色信号只有2个周期。也就是采样后的信号频率成分为原始信号频率成分的1/9。

关于FFT的一些

  这就是所谓的混叠。对连续信号进行等间隔采样时,如果采样频率不满足采样定理,采样后信号的频率就会发生混叠,即高于奈奎斯特频率的频率成分将被重构成低于奈奎斯特频率的信号。这种频谱的重叠导致的失真称为混叠,也就是高频信号被混叠成了低频信号。

  2.抗混叠滤波器

  如果信号中没有高于奈奎斯特频率的频率成分,则不存在混叠。但现实世界中的信号很难保证这一点。另一个方面,如果采样频率极高也可以一定程度上避免混叠,但这并不总是实用和可能,因为,最高采样频率受数采设备的限制,同时,当采样频率过高时,会出现大的数据文件。

  另外,采样定理只保证了信号不被歪曲为低频信号,但不能保证不受高频信号的干扰,如果传感器输出的信号中含有比所需信号频率还高的频率成分,ADC同样会以所选采样频率加以采样,混入分析带宽之内。

  故在采样前,应把比关心信号的最高频率成分以上的频率滤掉,这就需要抗混叠滤波,它是一个低通滤波器。低于奈奎斯特频率的频率通过,移除高于奈奎斯特频率的频率成分,这是理想的滤波器。

  实际情况是任何滤波器都不是理想的滤波器,抗混叠滤波器也不例外。滤波器存在滤波陡度,在滤波截止频率(奈奎斯特频率)以上的一些区域还存在混叠的可能性,这个区域对应的带宽的80%以上部分,也就是带宽的80%-100%区域。如下图所示,高于奈奎斯特频率以上的频率成分会关心奈奎斯特频率镜像到带宽的80%-100%区域,形成混叠,而带宽80%以内的区域,是无混叠的。

关于FFT的一些

  当按采样定理设置采样频率时,带宽的80%以上频带还可能存在混叠,如下图红框所示区域即遭受了频率混叠的影响。

关于FFT的一些

  3.为什么要用2.56倍

  既然采样定理要求的是2倍,那为什么要用2.56倍呢?基于以下两个方面的原因。

  要关心的频带内无混叠

  为了避免混叠,抗混叠滤波器是绝大多数采系统不可缺少的组成部分。通过上面的讲解,我们已经了解到,带宽80%以上区域仍然存在混叠的可能性。因此,为了确保在感兴趣的带宽内数据无混叠,则采样频率要满足以下要求

  fs ≥2.5fmax

  这就使得存在频率混叠的区间位于感兴趣的频宽之外了。如要求100Hz内无混叠,则采样频率应设置成250Hz,带宽为125Hz,带宽的80%为100Hz,因此,存在混叠可能性的带宽80%以上区域已位于感兴趣的频带之外了。当采样频率高于关心的最高频率2.5倍时,关心的频带内已无混叠了。

  要方便计算机处理

  快速傅立叶变换要求处理的数据块包含的数据点为2^N,而计算机也只能用0和1来存储数据,因此,计算机处理的数据时,如果是2^N会更方便些。我们知道256=2^8,因此,离2.5最近的2.56便成为了一个重要的“优先数”(先借用一下优先数这个概念)。

  基于以上两个方面的原因,采样频率从定理中的2倍提高到工程上的2.56倍。也就是说当采样频率高于关心的最高频率的2.56倍时,关心的最高频率以内的带宽是无混叠的。但是要注意,这还是从频率上去定义采样频率的,如果按2.56倍设置采样频率,虽然频率没有混叠,但可能信号的幅值还存在失真。

  当关心频率成分时,可以按2.56倍的关系设置采样频率;但如果关心信号的幅值(时域),那样,采样频率应设置成关心的最高频率的10倍以上,才不会使信号幅值有明显的失真。

  分享:

  你想象一个白色的圆盘,有一条沿着半径的黑线,圆盘以角速度旋转。

  你以一定的周期拍照,就是采样。

  你拍照的频率恰好为圆盘自转频率两倍的时候,你的照片里黑线的位置,永远是下一张和上一张呈180度,看不出圆盘原来到底是顺时针转的还是逆时针转的。


转载自http://www.kokojia.com/article/24171.html