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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
程序如下:function resultCorrect=spectrumcorrectenergymethodshare(inputDate,correctNum,fs)
5 s3 G' e  y8 Y$ ]- `%功能:离散频谱校正能量重心法,适用单频点信号校正,只采用了加汉宁窗的结果
" X( g9 G  ?: g6 Z%注意:信号的模型为Acos(2*pi*f*t+pha),注意t从0开始,correctNum为采用校正的正点数,汉宁窗通常采用两点就可以获得很高的精度
& h- L! U+ r! W9 i! B' `1 f%输入:inputDate待分析数据,数据长度为偶数,统一为行向量;fs采样频率
. Z2 x/ Z! ]+ E% Y6 T' @%输出:resultCorrect校正后的频率,幅值,相位结果' P1 [0 u" N- H  p4 f$ ^
resultCorrect=zeros(1,3);   + y$ ~; D7 U6 K7 i: l4 m
N=length(inputDate);    %数据长度, B0 }: X, ?7 N& s6 e  P. p
w=hann(N,'periodic');   %生成汉宁窗
2 Q& h% I9 q& ufftDate=fft(inputDate.*w');  8 U6 l9 q  m0 E5 U
k=2.667;                %汉宁窗恢复系数
. l5 \6 r+ r+ Y4 g, QfftDate=fftDate(1:N/2)/N*2;      %单边复数谱  
. K) v& r. N+ V9 N* afftDateMag=abs(fftDate);         %单边幅值谱
6 f. x& v& Z# offtDatePower=fftDateMag.^2;      %单边功率谱1 Z: A: G4 H: F' r+ ^/ j
[~,maxIndex]=max(fftDatePower);     %功率最大值对应位置; Z" J: f2 E8 s' J# s
maxAngle=angle(fftDate(maxIndex));  %最大值处对应的相位  
- R# e% g, m0 G6 ~" N6 {+ \dn=-correctNum:correctNum;  B) x9 u% c2 a, r
f=sum((maxIndex+dn).*fftDatePower(maxIndex+dn))/sum(fftDatePower(maxIndex+dn));   %归一化校正频率      ! y; X' C3 r5 W8 W% A
resultCorrect(1,1)=(f-1)*fs/N;       %频率校正结果,注意matlab下标是从1开始的
7 o  ^. |, X1 B; V& h- T8 I' i6 @0 C* ?resultCorrect(1,2)=sqrt(k*sum(fftDatePower(maxIndex+dn)));    %校正幅值结果            7 D# W- S% K$ R8 R# P) X
resultCorrect(1,3)=maxAngle+pi*(maxIndex-f);                  %校正相位结果+ i( Y2 m' b# Y
resultCorrect(1,3)=mod(resultCorrect(1,3),2*pi);
, Z  |$ c" n9 W! TresultCorrect(1,3)=resultCorrect(1,3)-(resultCorrect(1,3)>pi)*2*pi;    %象限定在(-pi,pi]  ' [- z" ]6 }9 @. I- \; B" r$ b% g3 [
end5 L7 l3 s( m' M2 ~! q' _3 B% v9 Z$ {
可仿真看下效果,误差还是很小的
% h( O) H1 I5 H& d, F4 x7 J9 e# `+ et=0:0.01:1-0.01;
* T5 |* h, b9 `1 t- Tx=4.2*cos(2*pi*5.4*t+0.4);
0 R0 B2 @( b) k1 [5 i7 NresultCorrect=spectrumcorrectenergymethodshare(x,2,100)* S, R, r0 a1 |6 W- Q# r: o2 `
resultCorrect =
8 [& ~* H8 Y! }3 x/ Y
# q5 O% f4 u' h' z) E# m     5.3993    4.1995    0.4021, V* v# F) D# Y1 b3 y# {+ u
+ U2 _( ?7 N( F0 c( W6 v' }$ b
7 Y$ l& J! q# G6 u

9 G; B, R0 ]/ V1 Y
游客,如果您要查看本帖隐藏内容请回复
4 T4 P; @9 g( T

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-1 11:30 , Processed in 0.156250 second(s), 27 queries , Gzip On.

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

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

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