求STFT对非稳定 信号的瞬时频率提取的MATLAB例子!谢谢!
求STFT对非稳定 信号的瞬时频率提取的MATLAB例子!谢谢!回复 #1 花瓣雨 的帖子
clearload ('');
N=4096;
n=1
f=500*2.56/1;
s=data;
tfr=tfrstft(s(end-1279:end));
tfr(100:140,:)=tfr(100:140,:)/10;
surf(abs(tfr(1:200,11:1010)).^2)
shading interp
view([-75,25]);
Xlabel(['时间(点数)'],'fontsize',12);
Ylabel(['频率(Hz)'],'fontsize',12);
Zlabel(['幅值'],'fontsize',12);
title('a','fontsize',12)
不知道你的意图,但是这个仅作参考。
[ 本帖最后由 zhangnan3509 于 2007-7-17 21:22 编辑 ]
回复 #2 zhangnan3509 的帖子
上面的程序能画出STFT时频图,可以观察信号频率的变化,但是不能给出确切的瞬时频率值。如何提取瞬时频率可以参考文章《基于瞬时频率估计的瀑布图分析》 对于从时频分布图提取瞬时频率的问题,其实时频工具箱tftb就有这个功能,举例如下:
%%%%%%%%%%%%%%%%%%%%%%%%%%%
sig=fmconst(256,0.1)+fmlin(256,0.15,0.30)+fmlin(256,0.2,0.45);
figure(1)
plot(real(x))
title('信号')
%%%%%%%%%%%%%%%%%%
h=tftb_window(47,'Kaiser');
t=1:1:256;
figure(2)
tfrrsp(sig,t,256,h);%重分配周期图
title('信号时频图')
%%%%%%%%%%%%%%%%%%
=tfrrsp(sig,t,128,h);
=ridges(tfr,hat,t,'tfrrsp',1);%pointsf即为提取的瞬时频率点的频率,pointst为对应的时刻
figure(3)
plot(pointst,pointsf,'.')
set(gca,'Ylim',)
title('提取的瞬时频率点')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
不过还有一个问题就是pointsf中包含了3个信号分量的瞬时频率,那么要提取某一个分量的瞬时频率,该如何从pointsf中提取呢?
当然如果是单分量信号那就没有问题了。
[ 本帖最后由 zhlong 于 2007-8-3 21:47 编辑 ] 未加噪效果不错,若加了噪就什么就看不出来了!
回复 #2 zhangnan3509 的帖子
非常感谢!请问你能否将旋转机械升或者降速过程的振动信号发一份给我?我的邮箱是:xp_zhao@163.com
再次感谢!!
回复 #3 zhlong 的帖子
非常感谢,这篇文章我看过了,但具体实现起来还有一些不是太清楚,所以想找人切磋一下。 本帖最后由 VibInfo 于 2016-10-17 15:20 编辑原帖由 zhlong 于 2007-8-3 21:42 发表
对于从时频分布图提取瞬时频率的问题,其实时频工具箱tftb就有这个功能,举例如下:
不过还有一个问题就是pointsf中包含了3个信号分量的瞬时频率,那么要提取某一个分量的瞬时频率,该如何从pointsf中提取呢?
...
信号sig既包含实部也有虚部,这是处理过的信号,还是原始信号?
比如我有一个位移信号x,单位是mm,我该怎么处理才能使用这个例子计算? 学习一次啊。:time: 感谢楼主分享 感谢楼主分享
确实不错,不知道应用在我的信号上效果如何。。。{:{13}:} 正好用到,感谢分享 楼主师兄你好,关于非平稳信号提取瞬时频率进行阶比分析的程序能学习一下吗,song_bjtu@163.com是我的邮箱,谢谢!
页:
[1]