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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
程序如下:function resultCorrect=spectrumcorrectenergymethodshare(inputDate,correctNum,fs)
1 p; O. N7 c- J4 I%功能:离散频谱校正能量重心法,适用单频点信号校正,只采用了加汉宁窗的结果1 m4 j9 b: F% y, D% p  o& O
%注意:信号的模型为Acos(2*pi*f*t+pha),注意t从0开始,correctNum为采用校正的正点数,汉宁窗通常采用两点就可以获得很高的精度& l/ I/ w* N  Y; Z) c  S
%输入:inputDate待分析数据,数据长度为偶数,统一为行向量;fs采样频率
9 |" v3 C0 a/ h. j9 r( }' A* H%输出:resultCorrect校正后的频率,幅值,相位结果
7 O4 J( r- c1 p+ KresultCorrect=zeros(1,3);   
9 D3 ^; H$ E- z3 o6 J* L6 R- h6 IN=length(inputDate);    %数据长度
+ J. M2 E7 A6 W! z) @% jw=hann(N,'periodic');   %生成汉宁窗7 \0 R/ e. \1 F$ x  @& ~4 W. I
fftDate=fft(inputDate.*w');  
3 M& H2 u( p" Pk=2.667;                %汉宁窗恢复系数2 N" G* J' [9 s7 H! ~
fftDate=fftDate(1:N/2)/N*2;      %单边复数谱  & s6 t& J+ y# u2 w3 Q- u) l  r
fftDateMag=abs(fftDate);         %单边幅值谱0 W# s7 u) Q7 k% ]
fftDatePower=fftDateMag.^2;      %单边功率谱
4 R9 g$ B+ K: G/ c$ h; E[~,maxIndex]=max(fftDatePower);     %功率最大值对应位置
- `9 W# \& z+ i- j( s7 L. wmaxAngle=angle(fftDate(maxIndex));  %最大值处对应的相位  2 v, E3 q! ~0 [& T( w1 w
dn=-correctNum:correctNum;
/ }0 g2 I* |" h# K' C, of=sum((maxIndex+dn).*fftDatePower(maxIndex+dn))/sum(fftDatePower(maxIndex+dn));   %归一化校正频率      ! _6 e% k+ E# n& Q/ k: D  g
resultCorrect(1,1)=(f-1)*fs/N;       %频率校正结果,注意matlab下标是从1开始的
6 {- _; P* V8 a- f, SresultCorrect(1,2)=sqrt(k*sum(fftDatePower(maxIndex+dn)));    %校正幅值结果            # A; G' H7 L0 E- r
resultCorrect(1,3)=maxAngle+pi*(maxIndex-f);                  %校正相位结果
6 L' Q' o* v2 w5 ]  z+ |resultCorrect(1,3)=mod(resultCorrect(1,3),2*pi);
* ~+ `7 x, U" v) qresultCorrect(1,3)=resultCorrect(1,3)-(resultCorrect(1,3)>pi)*2*pi;    %象限定在(-pi,pi]  
2 }. w# q  Z" [) send1 {& R$ E0 z( `0 o  Z
可仿真看下效果,误差还是很小的
" M7 ^9 F) i8 S$ S) vt=0:0.01:1-0.01;* v- w" ^$ [  Y6 m) W
x=4.2*cos(2*pi*5.4*t+0.4);' w4 y' A+ Y/ M$ h+ P. L; ^( a% d
resultCorrect=spectrumcorrectenergymethodshare(x,2,100)
6 g2 J8 D7 F' s' IresultCorrect =
# i' @- V% X  B2 P4 l9 D( F* U
; f8 {8 r6 B: d8 C     5.3993    4.1995    0.4021
8 b' M# f' v3 E# z% b0 g6 j1 v) L  Z
! c9 }3 B( F; r, l8 S2 L! q/ w3 X

4 J; s+ z! m: H4 n. F4 _9 U
游客,如果您要查看本帖隐藏内容请回复

9 N+ @. i/ ~+ g$ v

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-5 00:38 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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