论文部分内容阅读
【摘 要】导频信号的频率估计在电信网中具有重要的意义,CZT算法作为一种常用的细化选带频谱分析的方法,在导频信号的频率估计中能得到高精度的频率、幅值和相位。文章分析了CZT算法的特点,提出一种联合FFT和CZT的快速高精度算法。对该算法与直接计算FFT进行比较,通过Matlab仿真加以验证,结果表明该联合算法在导频信号的频率估计时能有效提高频谱的分辨率。
【关键词】导频信号 频率估计 FFT CZT Matlab仿真
【中图分类号】TN911 【文献标识码】A 【文章编号】1006-9682(2011)07-0064-02
频率是信号的一个重要参量,在信号处理技术中,测定截获信号的频率是基本任务之一。在电信网内为测量或监控的目的会发送导频信号,这类信号通常为单一频率的信号。导频信号在WCDMA系统用于:软切换、开环功率控制、导频污染等算法,于是就需要一种快速、精确的导频信号的频率估计方法。FFT是常规的频率快速计算方法,计算出信号整个频率范围内的频谱。CZT是由傅立叶变换导出的一种频谱分析方法,可将整个频率范围中的某重点频段局部放大,从而观察频谱中的细微部分。本文提出一种联合FFT和CZT的正弦波频率估计算法,该方法具有快速、高精度的特点,并辅助MATLAB仿真加以说明。
一、FFT和CZT的基本原理
常用的FFT算法有基2FFT、分裂基FFT等,当x(n)是N点有限长序列,基2FFT计算x(n)的DFT所需要的复乘次数mF=(N/2)log2N,复加次数aF=Nlog2N。各种FFT算法的运算量并不相同,但计算出的频谱范围都是从直流到fs/2,在这一范围内信号的频谱具在相同的分辨率△f=fs/N。实际上我们常常只对信号的某一频段感兴趣。例如窄带信号就是这样,希望在窄带频带内的频率分辨率较高,带外则不予考虑,CZT算法就适应于这样的需要。
对z平面的单位圆做等间隔抽样,就可得到x(n)的DFT。若对z平面的单位圆的某一部分抽样,则是在有限的频率范围内进行频谱分析。可以沿z平面更一般的路径取值,沿z平面上一段螺线作等分角抽样,z的这些抽样点
时,各zk值就均匀等间隔的分布在单位圆上,这就是求序列的DFT。此时,如果是取A0=1,θ0为任意值,则所求的DFT是一段任意频率范围内的频谱,也就是单位圆上某一段的频谱。
当x(n)为N点序列,计算它的M点CZT。选择最小整数L同时满足
二、联合FFT和CZT的导频信号测频算法
首先,应用FFT计算出信号在直流到fs/2范围内的频谱,FFT计算出的频谱的频率分辨△f=fs/N,显而易见,若增加FFT的计算点数N,可相应提高频谱分辨率,提高测频精度,但计算所需的复乘次数大大增加。为了尽量少的运算量就能达到较高的频谱分辨率,我们先进行N点FFT分析,判断出待测频率的主瓣位置,再在主瓣范围内进行M点CZT细化,使主瓣范围的频率分辨率相对提高,从而获取理想的频率估计值。
如何确定频谱范围至关重要,在进行FFT运算进行频谱分析的时候,当信号的实际频率不是FFT频率分辨率△f整数倍时,就会产生由于FFT的“栅栏效应”导致的频谱泄露问题,即此时信号的实际频率位置并非位于最大谱线处,应该位于最大谱线附近的某个位置。例如对某无噪声导频信号进行FFT的结果如图1所示,由于“栅栏效应”,图1的峰值点A并不是真正的峰值,真正的峰值应该在A点与其相邻的点之间。如果依旧采用最大谱线所在点的频率索引值为频率估计值,就会造成一定的误差,可以在A点附近的一个区间做M=60点的CZT 运算来做峰值估计运算。[2]
三、联合FFT和CZT算法的运算量分析
分别比较一下达到相同频谱分辨率时,直接采用FFT计算与采用联合FFT和CZT算法的计算量。
对于基2FFT来说,如果要得到△f=fs/NM的频率分辨率,则其运算量为NMlog2NM。如果联合基2FFT和CZT的算法,要达到△f=fs/NM的分辨率,可先进行N点FFT的运算,再对主瓣计算M点CZT运算,这样所需的复乘次数为mF=Nlog2N+2(N+M)log2(N+M)。[3]
若以N=128、M=16为例,直接计算NM点FFT其运算量为229376;采用联合FFT和CZT算法,设先进行256点的FFT运算,再进行64点的CZT运算,则联合算法的运算量7143。同样的分辨率,直接计算FFT的方法运算量约是联合算法的32倍。
值得注意的是,进行CZT运算的频谱范围是根据先一步的FFT运算来确定。因此,在实际利用中,FFT和CZT的运算点数应视情况来设定,以期达到最大收益。
四、联合FFT和CZT算法的MATLAB仿真
在无噪声情况下,对一个100Hz频率、250Hz采样频率,序列长为1024点的导频信号进行联合算法仿真。MATLAB程序如下:
图1和图2是利用MATLAB在无噪声情况下对一个100Hz频率、250Hz采样频率,序列长为1024点的导频信号进行联合算法的仿真结果。其中图1是对信号进行1024点FFT计算得到了主瓣所在区间,经计算知峰值点出现在100.1Hz处,测量误差为0.1Hz。我们选择对99.61Hz到100.56Hz这个区间计算60点CZT,而图2就是进行60点CZT运算细化频谱后得到的频谱图,经计算知峰值点出现在99.994Hz,测量误差为0.006Hz。仿真证明只增加了60点的CZT运算量,误差就大大减小,印证了理论分析。
五、结 论
分析了CZT的计算原理后,提出了综合FFT和CZT的联合算法,与直接计算FFT相比,在达到相同的分析测频精度的前提下FFT和CZT的联合算法所需的运算量大大减少。最后借助Matlab仿真,验证了算法的可行性。
参考文献
1 程佩青.数字信号处理教程(第3版)[M].北京:清华大学出版社,2007:176
2 和昆英、郭 虹、刘洛琨等.一种FFT和CZT联合的快速高精度频率估计算法[J].电视技术,2006(8):18~20
3 万灵达、杨晓光.一种基于FFT的高精度频率估计算法[J].电子科技,2010(10):79~81
4 徐明远、刘增力.MATLAB仿真在信号处理中的应用[M].西安:西安电子科技大学出版社,2007:84
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文
【关键词】导频信号 频率估计 FFT CZT Matlab仿真
【中图分类号】TN911 【文献标识码】A 【文章编号】1006-9682(2011)07-0064-02
频率是信号的一个重要参量,在信号处理技术中,测定截获信号的频率是基本任务之一。在电信网内为测量或监控的目的会发送导频信号,这类信号通常为单一频率的信号。导频信号在WCDMA系统用于:软切换、开环功率控制、导频污染等算法,于是就需要一种快速、精确的导频信号的频率估计方法。FFT是常规的频率快速计算方法,计算出信号整个频率范围内的频谱。CZT是由傅立叶变换导出的一种频谱分析方法,可将整个频率范围中的某重点频段局部放大,从而观察频谱中的细微部分。本文提出一种联合FFT和CZT的正弦波频率估计算法,该方法具有快速、高精度的特点,并辅助MATLAB仿真加以说明。
一、FFT和CZT的基本原理
常用的FFT算法有基2FFT、分裂基FFT等,当x(n)是N点有限长序列,基2FFT计算x(n)的DFT所需要的复乘次数mF=(N/2)log2N,复加次数aF=Nlog2N。各种FFT算法的运算量并不相同,但计算出的频谱范围都是从直流到fs/2,在这一范围内信号的频谱具在相同的分辨率△f=fs/N。实际上我们常常只对信号的某一频段感兴趣。例如窄带信号就是这样,希望在窄带频带内的频率分辨率较高,带外则不予考虑,CZT算法就适应于这样的需要。
对z平面的单位圆做等间隔抽样,就可得到x(n)的DFT。若对z平面的单位圆的某一部分抽样,则是在有限的频率范围内进行频谱分析。可以沿z平面更一般的路径取值,沿z平面上一段螺线作等分角抽样,z的这些抽样点
时,各zk值就均匀等间隔的分布在单位圆上,这就是求序列的DFT。此时,如果是取A0=1,θ0为任意值,则所求的DFT是一段任意频率范围内的频谱,也就是单位圆上某一段的频谱。
当x(n)为N点序列,计算它的M点CZT。选择最小整数L同时满足
二、联合FFT和CZT的导频信号测频算法
首先,应用FFT计算出信号在直流到fs/2范围内的频谱,FFT计算出的频谱的频率分辨△f=fs/N,显而易见,若增加FFT的计算点数N,可相应提高频谱分辨率,提高测频精度,但计算所需的复乘次数大大增加。为了尽量少的运算量就能达到较高的频谱分辨率,我们先进行N点FFT分析,判断出待测频率的主瓣位置,再在主瓣范围内进行M点CZT细化,使主瓣范围的频率分辨率相对提高,从而获取理想的频率估计值。
如何确定频谱范围至关重要,在进行FFT运算进行频谱分析的时候,当信号的实际频率不是FFT频率分辨率△f整数倍时,就会产生由于FFT的“栅栏效应”导致的频谱泄露问题,即此时信号的实际频率位置并非位于最大谱线处,应该位于最大谱线附近的某个位置。例如对某无噪声导频信号进行FFT的结果如图1所示,由于“栅栏效应”,图1的峰值点A并不是真正的峰值,真正的峰值应该在A点与其相邻的点之间。如果依旧采用最大谱线所在点的频率索引值为频率估计值,就会造成一定的误差,可以在A点附近的一个区间做M=60点的CZT 运算来做峰值估计运算。[2]
三、联合FFT和CZT算法的运算量分析
分别比较一下达到相同频谱分辨率时,直接采用FFT计算与采用联合FFT和CZT算法的计算量。
对于基2FFT来说,如果要得到△f=fs/NM的频率分辨率,则其运算量为NMlog2NM。如果联合基2FFT和CZT的算法,要达到△f=fs/NM的分辨率,可先进行N点FFT的运算,再对主瓣计算M点CZT运算,这样所需的复乘次数为mF=Nlog2N+2(N+M)log2(N+M)。[3]
若以N=128、M=16为例,直接计算NM点FFT其运算量为229376;采用联合FFT和CZT算法,设先进行256点的FFT运算,再进行64点的CZT运算,则联合算法的运算量7143。同样的分辨率,直接计算FFT的方法运算量约是联合算法的32倍。
值得注意的是,进行CZT运算的频谱范围是根据先一步的FFT运算来确定。因此,在实际利用中,FFT和CZT的运算点数应视情况来设定,以期达到最大收益。
四、联合FFT和CZT算法的MATLAB仿真
在无噪声情况下,对一个100Hz频率、250Hz采样频率,序列长为1024点的导频信号进行联合算法仿真。MATLAB程序如下:
图1和图2是利用MATLAB在无噪声情况下对一个100Hz频率、250Hz采样频率,序列长为1024点的导频信号进行联合算法的仿真结果。其中图1是对信号进行1024点FFT计算得到了主瓣所在区间,经计算知峰值点出现在100.1Hz处,测量误差为0.1Hz。我们选择对99.61Hz到100.56Hz这个区间计算60点CZT,而图2就是进行60点CZT运算细化频谱后得到的频谱图,经计算知峰值点出现在99.994Hz,测量误差为0.006Hz。仿真证明只增加了60点的CZT运算量,误差就大大减小,印证了理论分析。
五、结 论
分析了CZT的计算原理后,提出了综合FFT和CZT的联合算法,与直接计算FFT相比,在达到相同的分析测频精度的前提下FFT和CZT的联合算法所需的运算量大大减少。最后借助Matlab仿真,验证了算法的可行性。
参考文献
1 程佩青.数字信号处理教程(第3版)[M].北京:清华大学出版社,2007:176
2 和昆英、郭 虹、刘洛琨等.一种FFT和CZT联合的快速高精度频率估计算法[J].电视技术,2006(8):18~20
3 万灵达、杨晓光.一种基于FFT的高精度频率估计算法[J].电子科技,2010(10):79~81
4 徐明远、刘增力.MATLAB仿真在信号处理中的应用[M].西安:西安电子科技大学出版社,2007:84
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文