声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4673|回复: 21

[其他] STFT分析图说明

[复制链接]
发表于 2007-7-1 00:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我对一组振动信号做STFT变换后,得到下边这个时频分布图,对图的意义不太了解,请指点一下。
2.png
回复
分享到:

使用道具 举报

发表于 2007-7-1 00:28 | 显示全部楼层

回复 #1 16443 的帖子

估计是你参数设置的问题,主要是窗宽和重叠。
另外你的STFT程序能否贴上来看看。
 楼主| 发表于 2007-7-1 08:58 | 显示全部楼层

回复 #2 zhlong 的帖子

clear
clc
A=textread('result.txt'); %read data
AA=A(:,2);
sig=AA(2:length(AA),1);
%For a faster computation, N should be a power of two
N=2048; % freqency number
M=length(sig);
if (N>M)
    error('sampling number N must smaller signal length M')
end
figure(1)
plot((1:length(sig)),sig)
title('Time-Amplitude');
xlabel('Time T');
ylabel('Amplitude A');
h = window(@gausswin,17);  %gausswin
[tfr,t,f]=tfrstft(sig,1:N,N,h); %time freqency
figure(2)
contour(t,f,abs(tfr))
title('time-freqency 17-dian gausswin');
xlabel('Time T');
ylabel('Freqency f');
发表于 2007-7-1 09:12 | 显示全部楼层
1,有可能楼主取的窗函数:
h = window(@gausswin,17);
窗长17太短,加长试试看;
2,从图中看能量都集中在0频附近,说明有较大的直流分量,建议楼主在做STFT之前先消除直流分量。
发表于 2007-7-1 09:32 | 显示全部楼层

回复 #4 songzy41 的帖子

我也认为有相同的问题,17个跟2048个比起来是有点太小了
发表于 2007-7-1 09:42 | 显示全部楼层

回复 #3 16443 的帖子

t = 0:.0001:.0255;
x1 = sin(2*pi*80*t);
x2= 0.8*exp(-(t-0.01875).^2*1000000).*sin(2*pi*1600*t);
%subplot 211; plot(t,x1,'r',t,x2,'b');
axis([0 0.0255 -1 1]); grid;
x=x1+x2;
%subplot 212; plot(t,x);
axis([0 0.0255 -1 1]); grid;
%figure
h=window('hamming',255);
[tfr,tt,f]=tfrstft(x',1:256,256,h);
imagesc(t,f(1:64)*20000,abs(tfr(1:64,:)));
axis('xy');
xlabel('Time'); ylabel('Frequency');
(你也可以看看songzy41 先生的例子)
 楼主| 发表于 2007-7-1 10:35 | 显示全部楼层

回复 #6 zhangnan3509 的帖子

好的,我看看这个例子,顺便取大窗函数点数。
另外:用contour函数画出的图contour(t,f,abs(tfr)),图中的颜色值代表什么?
发表于 2007-7-1 10:52 | 显示全部楼层

回复 #7 16443 的帖子

我是这样理解的,相同的颜色的图线可以在取相同的值时得到的不同的结果。类似于等势线。详细的请看 help里关于Contour的解释

[ 本帖最后由 zhangnan3509 于 2007-7-1 10:54 编辑 ]
 楼主| 发表于 2007-7-1 12:45 | 显示全部楼层
我把数据文件传上来,你帮我看看,为啥这个离散数据的信号时频处理后,频率基本集中在0附近。
这个信号是通过软件计算,然后按照等时间间隔t=2E-4提取得到的。

[ 本帖最后由 16443 于 2007-7-1 12:48 编辑 ]

sig.mat

46.6 KB, 下载次数: 25

发表于 2007-7-1 15:20 | 显示全部楼层
本帖最后由 wdhd 于 2016-9-7 13:31 编辑

  楼主的信号本身频率就很低,接近0HZ。这个我们可以从图1楼主的信号时域图形来看,信号有6250个点,却只有大概10个周期。假定采样间隔为1s,那么一个周期为625s,信号频率为1/625=0.0016Hz。接近0。
1.gif
  上面的推导可以通过下面这个仿真信号来验证。
  t=1:6250;
  x=sin(2*pi*0.0016*t);
  plot(x)
2.gif
 楼主| 发表于 2007-7-1 15:24 | 显示全部楼层
谢谢,你的解答使我明白了为啥时频分布主要集中在0Hz附近。看来我的信号在采集中存在问题,需要重新来过 :@L

[ 本帖最后由 zhlong 于 2007-7-1 15:26 编辑 ]
发表于 2007-7-1 15:28 | 显示全部楼层

回复 #11 16443 的帖子

你做故障诊断的吗?你这是仿真信号?还是实验采集的?
 楼主| 发表于 2007-7-1 15:49 | 显示全部楼层
我这是个仿真信号 ,按时间等步长计算得到
发表于 2007-7-1 15:50 | 显示全部楼层

回复 #13 16443 的帖子

做的是什么故障的仿真呢?
 楼主| 发表于 2007-7-1 16:04 | 显示全部楼层
不是,做了一个简单悬臂梁(不是单一的梁)的动态响应。
在matlab中怎样间隔n行(比如n=10),提取某一列的值组成一个新的列 ?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-22 21:31 , Processed in 0.063606 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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