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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
程序如下:function resultCorrect=spectrumcorrectenergymethodshare(inputDate,correctNum,fs)
% W  s2 d4 h* e2 }2 J, P0 B. G%功能:离散频谱校正能量重心法,适用单频点信号校正,只采用了加汉宁窗的结果
: F% _/ w# |, D6 w# Z: A; ]7 |%注意:信号的模型为Acos(2*pi*f*t+pha),注意t从0开始,correctNum为采用校正的正点数,汉宁窗通常采用两点就可以获得很高的精度
+ q8 C7 i; f6 \& h%输入:inputDate待分析数据,数据长度为偶数,统一为行向量;fs采样频率; R: g  l" @* n1 l
%输出:resultCorrect校正后的频率,幅值,相位结果
' s1 a$ K8 M( |, b- @4 hresultCorrect=zeros(1,3);   
7 G1 c0 j6 G! gN=length(inputDate);    %数据长度2 @7 r  q3 F6 {6 W
w=hann(N,'periodic');   %生成汉宁窗9 y* J4 ~/ K3 n9 }  T
fftDate=fft(inputDate.*w');  " U- L, U' m: x6 V8 N9 z9 G! V
k=2.667;                %汉宁窗恢复系数
& c# D5 Z4 {2 K6 efftDate=fftDate(1:N/2)/N*2;      %单边复数谱  
$ s1 Y) E3 p$ j0 v  DfftDateMag=abs(fftDate);         %单边幅值谱6 t, i! X# o7 u+ @
fftDatePower=fftDateMag.^2;      %单边功率谱
/ c# {6 I3 g4 V5 |% P# w8 H[~,maxIndex]=max(fftDatePower);     %功率最大值对应位置
) @5 l: w/ u  a9 e4 V/ amaxAngle=angle(fftDate(maxIndex));  %最大值处对应的相位  
9 i5 F. `% D: v; {8 sdn=-correctNum:correctNum;+ d2 i; C1 j  T* V, O; W
f=sum((maxIndex+dn).*fftDatePower(maxIndex+dn))/sum(fftDatePower(maxIndex+dn));   %归一化校正频率      
* L& E# E7 l- z/ {. A- G8 }4 nresultCorrect(1,1)=(f-1)*fs/N;       %频率校正结果,注意matlab下标是从1开始的
" I+ Y% Z% r) ^* w$ xresultCorrect(1,2)=sqrt(k*sum(fftDatePower(maxIndex+dn)));    %校正幅值结果            
$ ^4 w: i9 J2 E" aresultCorrect(1,3)=maxAngle+pi*(maxIndex-f);                  %校正相位结果
$ Y5 j6 B# ?) G3 e8 K6 EresultCorrect(1,3)=mod(resultCorrect(1,3),2*pi);  h5 {5 {' ~' y% ?" S
resultCorrect(1,3)=resultCorrect(1,3)-(resultCorrect(1,3)>pi)*2*pi;    %象限定在(-pi,pi]  
7 W8 s7 G/ w* k1 J6 W6 dend
9 {9 F% K; M! H* U# y. }可仿真看下效果,误差还是很小的
: ~# P0 G+ S' `5 }: \+ Y! ]; `6 zt=0:0.01:1-0.01;, x* ?# Y; w" Y9 S' G8 H8 b. T
x=4.2*cos(2*pi*5.4*t+0.4);- p" f1 N/ j  y) k6 t
resultCorrect=spectrumcorrectenergymethodshare(x,2,100)
1 |( ?/ Y' n. P" W/ V3 n1 A6 _resultCorrect =( C, P1 z# n" |* U" a7 p  \. h
$ Y+ l  r) {6 A! b
     5.3993    4.1995    0.4021' X% P) X6 t/ x! V4 H  j; m  t5 R
  _6 Z+ Y2 v( D0 n/ Y# I) W

" ^& e3 B" o  O: N& Y  N& k8 ]# `( _' L, s
游客,如果您要查看本帖隐藏内容请回复

* \" D0 U; C& y, G. U# l. y

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 01:25 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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