找回密码
 注册
关于网站域名变更的通知
查看: 389|回复: 1
打印 上一主题 下一主题

离散频谱的能量重心校正法程序

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-2-27 17:54 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
程序如下:function resultCorrect=spectrumcorrectenergymethodshare(inputDate,correctNum,fs)! _9 C; O" e( ^" ^
%功能:离散频谱校正能量重心法,适用单频点信号校正,只采用了加汉宁窗的结果
  F# [/ D" A- g) ]%注意:信号的模型为Acos(2*pi*f*t+pha),注意t从0开始,correctNum为采用校正的正点数,汉宁窗通常采用两点就可以获得很高的精度
2 [2 W* [* l, t" Z%输入:inputDate待分析数据,数据长度为偶数,统一为行向量;fs采样频率) L. H( |8 _' L3 e6 }; \% ?
%输出:resultCorrect校正后的频率,幅值,相位结果$ }% s5 c2 r- x
resultCorrect=zeros(1,3);   
2 N; \' h3 F; z# r- [/ c& ]) |* Q( }N=length(inputDate);    %数据长度
- R( x% Q: x2 _' Q( C3 `) a6 Cw=hann(N,'periodic');   %生成汉宁窗7 j9 E" ~. V% Q4 {3 B$ u' ^
fftDate=fft(inputDate.*w');  
1 t& t1 H' S# a- Y# Ak=2.667;                %汉宁窗恢复系数
  }- x' s# J' I) e% {fftDate=fftDate(1:N/2)/N*2;      %单边复数谱  , k' }( I, I+ q8 t
fftDateMag=abs(fftDate);         %单边幅值谱
, j) @. P4 h) }5 b% VfftDatePower=fftDateMag.^2;      %单边功率谱
: _3 b# ^; i& n/ @[~,maxIndex]=max(fftDatePower);     %功率最大值对应位置
. W& M( [+ j! S$ T* O7 K$ CmaxAngle=angle(fftDate(maxIndex));  %最大值处对应的相位  
' m5 V' g8 ^" ^" g# o5 K. rdn=-correctNum:correctNum;
# l! p. R9 Q* Q* Y; bf=sum((maxIndex+dn).*fftDatePower(maxIndex+dn))/sum(fftDatePower(maxIndex+dn));   %归一化校正频率      7 e/ w- y2 }" N3 h* a8 |
resultCorrect(1,1)=(f-1)*fs/N;       %频率校正结果,注意matlab下标是从1开始的5 i6 I4 V  T- i! i2 q
resultCorrect(1,2)=sqrt(k*sum(fftDatePower(maxIndex+dn)));    %校正幅值结果            
! W% [& J( ^1 W3 o* xresultCorrect(1,3)=maxAngle+pi*(maxIndex-f);                  %校正相位结果* E. g: x. ]( O
resultCorrect(1,3)=mod(resultCorrect(1,3),2*pi);
* W) \( o: f2 {0 UresultCorrect(1,3)=resultCorrect(1,3)-(resultCorrect(1,3)>pi)*2*pi;    %象限定在(-pi,pi]  : @( M* m# A) V+ a5 u* ?8 E. i
end
3 C. x: F$ B  a3 l) y可仿真看下效果,误差还是很小的
! ~2 u% h% E4 ^. l# Z6 F7 L6 ]. c5 Ut=0:0.01:1-0.01;
+ Z8 m9 K: T2 D' n  ~0 _* ux=4.2*cos(2*pi*5.4*t+0.4);
* o; {% w9 W# F. v+ u" tresultCorrect=spectrumcorrectenergymethodshare(x,2,100)1 V5 M1 w- ?8 z& y% l; \
resultCorrect =
' w7 {! X4 @$ X
% v' }8 W4 o& A' J+ A% Z/ H# R     5.3993    4.1995    0.4021
" D  S4 T% E- J; A/ s) _  E& t2 `/ ?, M( f2 I) b. ]3 b

7 {6 Z& }, r( r( W/ z5 ?* Q" F2 H( K. o; B" e
游客,如果您要查看本帖隐藏内容请回复

% c  V* X& u) R! N; |( d% {7 k* i

该用户从未签到

2#
发表于 2020-2-27 18:16 | 只看该作者
离散频谱的能量重心校正法程序
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 01:56 , Processed in 0.156250 second(s), 28 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表