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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
程序如下:function resultCorrect=spectrumcorrectenergymethodshare(inputDate,correctNum,fs)
" x6 [5 n8 f8 ~  a( m" l%功能:离散频谱校正能量重心法,适用单频点信号校正,只采用了加汉宁窗的结果$ V" f# e3 G, A+ Z9 H+ H
%注意:信号的模型为Acos(2*pi*f*t+pha),注意t从0开始,correctNum为采用校正的正点数,汉宁窗通常采用两点就可以获得很高的精度
9 z  z& v7 L4 Y" s%输入:inputDate待分析数据,数据长度为偶数,统一为行向量;fs采样频率* |, ~0 n  _! u6 a* x% P
%输出:resultCorrect校正后的频率,幅值,相位结果
$ P- w) P) S, Y0 p  E4 k0 dresultCorrect=zeros(1,3);   9 c- I) O3 c. c3 p3 R$ b
N=length(inputDate);    %数据长度
: r, p4 x3 g7 Ew=hann(N,'periodic');   %生成汉宁窗
& @2 P$ T! [! A; \% K! _# z+ S. P' QfftDate=fft(inputDate.*w');  1 L. ?7 [2 v5 i% f* H* R, s
k=2.667;                %汉宁窗恢复系数
6 r$ R/ v/ G2 m0 G0 i6 LfftDate=fftDate(1:N/2)/N*2;      %单边复数谱  $ C# v% u1 E, U2 p
fftDateMag=abs(fftDate);         %单边幅值谱
. L4 p5 _7 k) c+ I+ X- bfftDatePower=fftDateMag.^2;      %单边功率谱& l% G; K0 u2 c8 }2 x
[~,maxIndex]=max(fftDatePower);     %功率最大值对应位置
: x. B: \5 q: f# ImaxAngle=angle(fftDate(maxIndex));  %最大值处对应的相位  " l1 [! r$ c+ g7 P) R- q. W6 X" W+ T4 u
dn=-correctNum:correctNum;+ F& a8 E0 s- {3 G6 o- a
f=sum((maxIndex+dn).*fftDatePower(maxIndex+dn))/sum(fftDatePower(maxIndex+dn));   %归一化校正频率      ( f% ]$ U2 u( {( O
resultCorrect(1,1)=(f-1)*fs/N;       %频率校正结果,注意matlab下标是从1开始的
5 t2 ^3 D" {$ E6 R0 W& T* vresultCorrect(1,2)=sqrt(k*sum(fftDatePower(maxIndex+dn)));    %校正幅值结果            ' n0 P* G- G* N& c7 C* ^% z1 R
resultCorrect(1,3)=maxAngle+pi*(maxIndex-f);                  %校正相位结果
" t' S; L/ }& e: i, N$ SresultCorrect(1,3)=mod(resultCorrect(1,3),2*pi);
) H# h% V* ^. q9 ?4 AresultCorrect(1,3)=resultCorrect(1,3)-(resultCorrect(1,3)>pi)*2*pi;    %象限定在(-pi,pi]  " t% G! W6 j6 Z# e6 |( i
end
6 G  H, `% K/ z可仿真看下效果,误差还是很小的
8 Q6 x5 B3 `0 vt=0:0.01:1-0.01;  s  o9 [% [- Q+ f9 u
x=4.2*cos(2*pi*5.4*t+0.4);
+ h% r$ ]8 ^8 L2 d* p( {; j& v; o  TresultCorrect=spectrumcorrectenergymethodshare(x,2,100)
: L& e, |, D; s; m; MresultCorrect =
' a0 ~1 I% b9 P$ V, i- e( L6 T, g2 g  G1 n" J
     5.3993    4.1995    0.4021
/ z& M* f0 G' w+ W3 j# L: ~4 {" W1 ^
# D2 u4 u; [. _, k& v
' W4 C6 u/ H; j' O7 l
游客,如果您要查看本帖隐藏内容请回复

5 X* r4 T8 `8 q- T8 [$ A: A/ p

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 04:12 , Processed in 0.171875 second(s), 26 queries , Gzip On.

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

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

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