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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
程序如下:function resultCorrect=spectrumcorrectenergymethodshare(inputDate,correctNum,fs)
; i: X4 i$ z3 f( f: |4 V2 S" J%功能:离散频谱校正能量重心法,适用单频点信号校正,只采用了加汉宁窗的结果# u2 E7 X7 R& ^, F
%注意:信号的模型为Acos(2*pi*f*t+pha),注意t从0开始,correctNum为采用校正的正点数,汉宁窗通常采用两点就可以获得很高的精度# n. v, j! l7 B5 X( a8 A; [* r
%输入:inputDate待分析数据,数据长度为偶数,统一为行向量;fs采样频率
% e# f+ z8 ]8 M& e%输出:resultCorrect校正后的频率,幅值,相位结果( P) z8 e4 Q6 \3 a. @  L1 `8 Z
resultCorrect=zeros(1,3);   
- q+ b* m: L7 qN=length(inputDate);    %数据长度
6 }9 o& d( ~; X; R: I; r$ o/ rw=hann(N,'periodic');   %生成汉宁窗! ?  u5 Z6 x$ N" B1 i3 t) @8 e
fftDate=fft(inputDate.*w');  
- F. t8 G  G4 I/ ~* ~$ _% ]( f/ dk=2.667;                %汉宁窗恢复系数
0 _0 p9 \5 F! G0 q; ~fftDate=fftDate(1:N/2)/N*2;      %单边复数谱  
( @$ ]5 C8 W, L( Y1 ~) offtDateMag=abs(fftDate);         %单边幅值谱# ]! ~" ~! _3 P2 w
fftDatePower=fftDateMag.^2;      %单边功率谱
6 _5 ]. l" w: B[~,maxIndex]=max(fftDatePower);     %功率最大值对应位置( [; j0 D# q: V  c% q; ]$ i( G
maxAngle=angle(fftDate(maxIndex));  %最大值处对应的相位  
4 a; @1 L. L. Y- idn=-correctNum:correctNum;, f0 t( @! n; y/ u& Y7 v; |( ?5 C3 v: w
f=sum((maxIndex+dn).*fftDatePower(maxIndex+dn))/sum(fftDatePower(maxIndex+dn));   %归一化校正频率      0 g& W& A0 [" V/ o3 U  P0 ]: R
resultCorrect(1,1)=(f-1)*fs/N;       %频率校正结果,注意matlab下标是从1开始的2 N' r8 G3 z5 q( y" i
resultCorrect(1,2)=sqrt(k*sum(fftDatePower(maxIndex+dn)));    %校正幅值结果            
& j9 d; c# {3 V4 t, zresultCorrect(1,3)=maxAngle+pi*(maxIndex-f);                  %校正相位结果
* X* J3 d% B  a' \resultCorrect(1,3)=mod(resultCorrect(1,3),2*pi);/ `9 \# D7 G3 L: y* v
resultCorrect(1,3)=resultCorrect(1,3)-(resultCorrect(1,3)>pi)*2*pi;    %象限定在(-pi,pi]  
; [; ]$ w. i5 d9 A. nend' ]/ d) j+ B9 b, c
可仿真看下效果,误差还是很小的
2 s# N3 b. I: `, o( s1 z, @t=0:0.01:1-0.01;0 g  ~/ d$ s# b2 t4 W) j( _- o3 G& N
x=4.2*cos(2*pi*5.4*t+0.4);
0 y; a5 w$ k! e& Z4 t( m2 g0 J9 `resultCorrect=spectrumcorrectenergymethodshare(x,2,100)
1 Y% S* \2 W  X# }resultCorrect =8 o7 u# {6 _  i% s$ [4 S

! m. ~# r7 _" ]! G9 j6 h2 w. w/ ~  r, z     5.3993    4.1995    0.40216 v5 @/ m1 y. S9 K% e$ A

3 c' k/ V. Z5 }$ Y- Z; x# R5 l
9 e0 k, C9 f9 z, s2 K  W6 Y
7 j3 `1 N0 V$ B/ K' O& ^# O
游客,如果您要查看本帖隐藏内容请回复

, ?; V7 X4 @3 \  }1 o+ M

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-21 10:45 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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