回复 #13 破凰 的帖子
感觉程序有点问题,第一:原则上讲,f=f0*fs/ar,最后的f应该是f=(w0/2pi)*(1/(ar*Te)),而此处w0恰好等于2pi,所以就有了f=1/(ar*Te);第二,如果把morlet复小波换成'cmor1-2',就是中心频率为4pi,此时程序进入死循环,不知是何原因啊?有什么不对的地方,还望高手指正。
回复 #17 batizhang 的帖子
迭代发散造成的,改变阈值的大小试试回复 #18 破凰 的帖子
我的第一个问题不知提的对不对,还望指教!回复 #19 batizhang 的帖子
对,这实际上就是尺度转频率。 有一问题查了半天也没找到答案,请问破凰--wa=cwt(s,a(1),'cmor2-1'); 中,cmor-fb-fc的fb和fc两个参数是如何确定的,一个是频带,一个是中心频率,多谢谢拉!!!!!!回复 #21 liuhui1983 的帖子
任意指定哈,一般来讲,中心频率或带宽参数越高,时频聚集性越好。回复 #21 liuhui1983 的帖子
有文章已经研究了如何寻求morlet小波的最优参数,你可以去看看。问题
如果函数的表达式为:s=cos(2*pi*(10*(t.^2)+10*t))+5*cos(2*pi*30*t);那么函数的瞬时频率应该是什么样子的?
下面是我采用上述程序得到的结果,好象图中只显示了频率30的结果,而表达式第一项cos(2*pi*(10*(t.^2)+10*t))的瞬时频率20*t+10没有在图中体现出来,如果想得到的话,应该怎样设置参数?
clc;
clear all;
a(1)=2;
Te=0.001;
t=0:0.001:1;
s=cos(2*pi*(10*(t.^2)+10*t))+5*cos(2*pi*30*t);%改了一下原信号
%s=hilbert(s);
%hudu=4*pi;
%用morlet小波进行分析;
a(1)=0.3;
Te=0.001;
kk=length(t);
k=0;
aa=0;
bb=0;
w0=2*pi*1;%cmor2-1小波的中心频率为2pi
for j=2:kk
while 1
wa=cwt(s,a(1),'cmor2-1');
fai=angle(wa);
fai=unwrap(fai);
dfa=abs(fai(j)-fai(j-1));
a0=w0*1/dfa;
if abs((a0-a(1))/a(1))<0.5%阈值不宜过小
ar(j-1)=a(1);
a(1)=a0;
break;
end
a(1)=a0;
end
end
f=1./(ar*Te);
plot(t(1:kk-1),f);
小波脊线问题
如果函数的表达式为s=cos(2*pi*(10*(t.^2)+10*t))+5*cos(2*pi*30*t);那函数的瞬时频率应该是什么样子的?
我采用上面的程序得到了下面的图,图中只显示了第二项的瞬时频率5*cos(2*pi*30*t); 为30,而第一项的cos(2*pi*(10*(t.^2)+10*t)),的瞬时频率20*t+10没有在图中体现出来,这是为什么?
如果想得到的话,应该怎样设置参数?
clc;
clear all;
a(1)=2;
Te=0.001;
t=0:0.001:1;
s=cos(2*pi*(10*(t.^2)+10*t))+5*cos(2*pi*30*t);%改了一下原信号
%s=hilbert(s);
%hudu=4*pi;
%用morlet小波进行分析;
a(1)=0.3;
Te=0.001;
kk=length(t);
k=0;
aa=0;
bb=0;
w0=2*pi*1;%cmor2-1小波的中心频率为2pi
for j=2:kk
while 1
wa=cwt(s,a(1),'cmor2-1');
fai=angle(wa);
fai=unwrap(fai);
dfa=abs(fai(j)-fai(j-1));
a0=w0*1/dfa;
if abs((a0-a(1))/a(1))<0.5%阈值不宜过小
ar(j-1)=a(1);
a(1)=a0;
break;
end
a(1)=a0;
end
end
f=1./(ar*Te);
plot(t(1:kk-1),f);
1
小波脊线
如果函数的表达式为s=cos(2*pi*(10*(t.^2)+10*t))+5*cos(2*pi*30*t);那函数的瞬时频率应该是什么样子的?
我采用上面的程序得到了下面的图,图中只显示了第二项的瞬时频率5*cos(2*pi*30*t); 为30,而第一项的cos(2*pi*(10*(t.^2)+10*t)),的瞬时频率20*t+10没有在图中体现出来,这是为什么?
如果想得到的话,应该怎样设置参数?
clc;
clear all;
a(1)=2;
Te=0.001;
t=0:0.001:1;
s=cos(2*pi*(10*(t.^2)+10*t))+5*cos(2*pi*30*t);%改了一下原信号
%s=hilbert(s);
%hudu=4*pi;
%用morlet小波进行分析;
a(1)=0.3;
Te=0.001;
kk=length(t);
k=0;
aa=0;
bb=0;
w0=2*pi*1;%cmor2-1小波的中心频率为2pi
for j=2:kk
while 1
wa=cwt(s,a(1),'cmor2-1');
fai=angle(wa);
fai=unwrap(fai);
dfa=abs(fai(j)-fai(j-1));
a0=w0*1/dfa;
if abs((a0-a(1))/a(1))<0.5%阈值不宜过小
ar(j-1)=a(1);
a(1)=a0;
break;
end
a(1)=a0;
end
end1
f=1./(ar*Te);
plot(t(1:kk-1),f);
小波脊线
如果函数的表达式为s=cos(2*pi*(10*(t.^2)+10*t))+5*cos(2*pi*30*t);那函数的瞬时频率应该是什么样子的?
我采用上面的程序得到了下面的图,图中只显示了第二项的瞬时频率5*cos(2*pi*30*t); 为30,而第一项的cos(2*pi*(10*(t.^2)+10*t)),的瞬时频率20*t+10没有在图中体现出来,这是为什么?
如果想得到的话,应该怎样设置参数?
clc;
clear all;
a(1)=2;
Te=0.001;
t=0:0.001:1;
s=cos(2*pi*(10*(t.^2)+10*t))+5*cos(2*pi*30*t);%改了一下原信号
%s=hilbert(s);
%hudu=4*pi;
%用morlet小波进行分析;
a(1)=0.3;
Te=0.001;
kk=length(t);
k=0;
aa=0;
bb=0;
w0=2*pi*1;%cmor2-1小波的中心频率为2pi
for j=2:kk
while 1
wa=cwt(s,a(1),'cmor2-1');
fai=angle(wa);
fai=unwrap(fai);
dfa=abs(fai(j)-fai(j-1));
a0=w0*1/dfa;
if abs((a0-a(1))/a(1))<0.5%阈值不宜过小
ar(j-1)=a(1);
a(1)=a0;
break;
end
a(1)=a0;
end
end
f=1./(ar*Te);
plot(t(1:kk-1),f);
1
小波脊线
如果函数的表达式为s=cos(2*pi*(10*(t.^2)+10*t))+5*cos(2*pi*30*t);那函数的瞬时频率应该是什么样子的?
我采用上面的程序得到了下面的图,图中只显示了第二项的瞬时频率5*cos(2*pi*30*t); 为30,而第一项的cos(2*pi*(10*(t.^2)+10*t)),的瞬时频率20*t+10没有在图中体现出来,这是为什么?
如果想得到的话,应该怎样设置参数?
clc;
clear all;
a(1)=2;
Te=0.001;
t=0:0.001:1;
s=cos(2*pi*(10*(t.^2)+10*t))+5*cos(2*pi*30*t);%改了一下原信号
%s=hilbert(s);
%hudu=4*pi;
%用morlet小波进行分析;
a(1)=0.3;
Te=0.001;
kk=length(t);
k=0;
aa=0;
bb=0;
w0=2*pi*1;%cmor2-1小波的中心频率为2pi
for j=2:kk
while 1
wa=cwt(s,a(1),'cmor2-1');
fai=angle(wa);
fai=unwrap(fai);
dfa=abs(fai(j)-fai(j-1));
a0=w0*1/dfa;
if abs((a0-a(1))/a(1))<0.5%阈值不宜过小
ar(j-1)=a(1);
a(1)=a0;
break;
end
a(1)=a0;
end
end
f=1./(ar*Te);
plot(t(1:kk-1),f); 高手指点一下,谢谢!