瞬时频率正确性的问题
利用matlab时频工具箱自带函数instfreq(x1')*fs得到的瞬时频率和按照瞬时频率的定义设计的程序
:x1=hilbert(imf(2,:));
xr1=real(x1);
xi1=imag(x1);P1=atan2(xi1,xr1);%imf1的瞬时相位
xh1=unwrap(P1);%unwrap(w)就是解卷绕,使相位在pi处不发生跳变,从而反应出真实的相位变化
fs=20000;
xhd1=fs*diff(xh1)/(2*pi);%归一化后的瞬时频率
xsp=abs(xhd1);XSP为瞬时频率
两种方法得到的瞬时频率的值不一样,请问各位大侠,哪种求解瞬时频率的方法是对的,小弟不胜感激!!!
没有看到你的图,从我现在做过的经验来看instfreq这个做的是正确的。至于为什么你另一种方法做的是否正确,我想一方面有可能你编程有问题(atan的定义范围你自习考量考量)。另外,评价对与错,针对你的仿真信号,真实的结果是显然的,为什么不做出来呢或者说为什么不选一个很确定的信号做比较呢???? yghit08 发表于 2012-10-25 22:14 static/image/common/back.gif
没有看到你的图,从我现在做过的经验来看instfreq这个做的是正确的。至于为什么你另一种方法做的是否正确, ...
好的 ,我先通过仿真验证一下吧。先谢了!!
yghit08 发表于 2012-10-25 22:14 static/image/common/back.gif
没有看到你的图,从我现在做过的经验来看instfreq这个做的是正确的。至于为什么你另一种方法做的是否正确, ...
我用instfreq求瞬时频率如图黑色曲线,
用dp/dt求瞬时频率如图蓝色曲线
为什么差这么多呢?
s=hilbert(singal);
=instfreq(s');
ph1=unwrap(ph);
dp=diff(ph);
dt=diff(t);
for j=1:99
if dp(j)<0
dp(j)=dp(j)+2*pi;
end
end
freq=dp./dt/fs;
本帖最后由 yghit08 于 2013-6-16 10:49 编辑
zhyjig 发表于 2013-6-16 10:37 static/image/common/back.gif
我用instfreq求瞬时频率如图黑色曲线,
用dp/dt求瞬时频率如图蓝色曲线
为什么差这么多呢?
先不管差异,先确定哪个求得对!
想让我说谁对谁错吗?为什么不从方法自身说这事,非得自己拿个不知对错的自编程序来说事。你能肯定你编的算瞬时频率的程序段没问题?确定这个再说。为什么不用确定结果的仿真数据测自己的程序段???
你用的方法和instfreq用的方法是一样的。
yghit08 发表于 2013-6-16 10:46 static/image/common/back.gif
先不管差异,先确定哪个求得对!
想让我说谁对谁错吗?为什么不从方法自身说这事,非得自己拿个不知对错 ...
有负的哦
页:
[1]