粤语残片 发表于 2013-10-10 08:55

如何读取小波时频图的信息

得到小波时频图,完全不懂颜色深浅表示什么,意义是什么,求教

江树空 发表于 2013-10-14 17:51

时频面上的数据,对应着你的分析信号在(某一瞬时时刻,某一瞬时频率分量)下的功率谱或功率谱密度或信号幅值,具体表征哪一个物理量取决于你的算法。总之颜色越深,代表这一时刻和频率下信号的能量越强。建议你做一个正弦扫频信号然后对其进行小波时频变化,你瞬间就明白了。

粤语残片 发表于 2013-10-15 15:25

江树空 发表于 2013-10-14 17:51 static/image/common/back.gif
时频面上的数据,对应着你的分析信号在(某一瞬时时刻,某一瞬时频率分量)下的功率谱或功率谱密度或信号幅 ...

多谢大侠赐教,我是材料加工专业的,所以信号分析是新接触,算法真的不懂,这是我做时频图的代码,请问这样的算法得到的是什么(功率谱/幅值/功率谱密度)?
wavename='morl';
   totalscal=1024;                  %尺度序列的长度,即scal的长度
   wcf=centfrq(wavename);            %小波的中心频率
   cparam=2*wcf*totalscal;         %为得到合适的尺度所求出的参数
   a=totalscal:-1:1;
   scal=cparam./a;                   %得到各个尺度,以使转换得到频率序列为等差序列
   coefs=cwt(y1,scal,wavename);       %得到小波系数
   f=scal2frq(scal,wavename,1/fs);   %将尺度转换为频率
   subplot(212);
   imagesc(t,f,abs(coefs)); %绘制色谱图
   axis();
   colorbar;
   xlabel('时间 t/s');
   ylabel('频率 f/Hz');
   title('小波时频图');

江树空 发表于 2013-10-17 10:21

粤语残片 发表于 2013-10-15 15:25 static/image/common/back.gif
多谢大侠赐教,我是材料加工专业的,所以信号分析是新接触,算法真的不懂,这是我做时频图的代码,请问这 ...

你这个算法其结果应该是代表的幅值,你的程序有些地方可能需要更改,如下:
wavename='cmor3-3';      %建议使用complex morlet小波(cmor后的系数3-3得根据实际情况设置,看matlab help),最好是根据具体信号选择合适的母小波函数,个人经验使用该小波函数做出的时频图比较好
totalscal=128;                  %尺度序列的长度,即scal的长度,尺度数不要太大,过大的话计算时间长,虽说频率划分的更细,但没那个必要
wcf=centfrq(wavename);            %小波的中心频率
cparam=2*wcf*totalscal;         %为得到合适的尺度所求出的参数
a=totalscal:-1:1;
scal=cparam./a;                   %得到各个尺度,以使转换得到频率序列为等差序列
coefs=cwt(y1,scal,wavename);       %得到小波系数
f=scal2frq(scal,wavename,1/fs);   %将尺度转换为频率
subplot(212);
surf(t,f,abs(coefs)); %绘制色谱图(建议使用surf函数,因为使用它,能在时频面上查看每个点的数值,imagesc则不具备该特点)
shading interp
%axis();
colorbar;
xlabel('时间 t/s');
ylabel('频率 f/Hz');
title('小波时频图');

附件图片为使用修改后你的程序对一正弦扫频信号的分析结果
顺便问一下,如果是刚接触信号处理为什么不用STFT呢?STFT更直观易懂,不过其效果确实比小波时频要差一点。

粤语残片 发表于 2013-10-17 15:27

本帖最后由 粤语残片 于 2013-10-17 15:48 编辑

江树空 发表于 2013-10-17 10:21 static/image/common/back.gif
你这个算法其结果应该是代表的幅值,你的程序有些地方可能需要更改,如下:
wavename='cmor3-3';      % ...
哇~真的是太感谢太感谢了,醍醐灌顶啊,STFT导师已经做出来了,现在是想通过频域特征找出故障信号的时间节点,所以想到了小波的时频分析,我的信号的频率在1~6Hz,所以把尺度数设定大一些,时频图像上看的更清楚,我这样想对吗,再次感谢!啊呀,修改后的程序运行错误啊:
??? Error using ==> surf at 78
Data dimensions must agree.

Error in ==> xuexi20xiugaiSHIPIN at 33
surf(t,f,abs(coefs)); %绘制色谱图(建议使用surf函数,因为使用它,能在时频面上查看每个点的数值,imagesc则不具备该特点)
求解求解

江树空 发表于 2013-10-17 21:18

本帖最后由 江树空 于 2013-10-17 21:50 编辑

粤语残片 发表于 2013-10-17 15:27 static/image/common/back.gif
哇~真的是太感谢太感谢了,醍醐灌顶啊,STFT导师已经做出来了,现在是想通过频域特征找出故障信号的时间节 ...
你先在workspace里看你t、f的维度,再看看coefs的维度,看是否一致?要别人帮忙查看的话,最好能贴出你完整的程序;你采样率多少?如果要重点关注低频的话,尺度数确实要求多一些,但是计算量太可怕了,就拿你的1024个尺度来说,画出图来巨卡。再说了小波时频在低频频率分辨率虽好,但时间分辨率差啊,估计你那故障信号的时间节点也不好定。

粤语残片 发表于 2013-10-18 09:12

江树空 发表于 2013-10-17 21:18 static/image/common/back.gif
你先在workspace里看你t、f的维度,再看看coefs的维度,看是否一致?要别人帮忙查看的话,最好能贴出你完 ...

内个,有点不好意思了,维度是什么,不知道怎么看,如果不一样应该怎么办呢,错误提示的意思好像就是维度不一样,非常感谢您的指导,我信号采样频率是1250Hz,信号的频率在1~6Hz,尺度的设定的确有待继续摸索,(不过循序渐进吧,先能确定小波用于自己信号分析能替代FFT,并且有时间信息)下面是我的整段程序
load 'lasuxiajiang.txt';
t1=lasuxiajiang(:,1);
y1=lasuxiajiang(:,2);
fs=1250;
t=16:1/fs:26;
figure(1);
plot(t1,y1);
xlabel('t');ylabel('MDF');
title('original')
wavename='cmor3-3';      %建议使用complex morlet小波(cmor后的系数3-3得根据实际情况设置,看matlab help),最好是根据具体信号选择合适的母小波函数,个人经验使用该小波函数做出的时频图比较好
totalscal=128;                  %尺度序列的长度,即scal的长度,尺度数不要太大,过大的话计算时间长,虽说频率划分的更细,但没那个必要
wcf=centfrq(wavename);            %小波的中心频率
cparam=2*wcf*totalscal;         %为得到合适的尺度所求出的参数
a=totalscal:-1:1;
scal=cparam./a;                   %得到各个尺度,以使转换得到频率序列为等差序列
coefs=cwt(y1,scal,wavename);       %得到小波系数
f=scal2frq(scal,wavename,1/fs);   %将尺度转换为频率
figure(2);
surf(t,f,abs(coefs)); %绘制色谱图(建议使用surf函数,因为使用它,能在时频面上查看每个点的数值,imagesc则不具备该特点)
shading interp请大神查看错误

江树空 发表于 2013-10-18 12:15

本帖最后由 江树空 于 2013-10-18 12:22 编辑

粤语残片 发表于 2013-10-18 09:12 static/image/common/back.gif
内个,有点不好意思了,维度是什么,不知道怎么看,如果不一样应该怎么办呢,错误提示的意思好像就是维度 ...
我拿你的程序用仿真信号试了下,绘图没问题啊,你再查查你的数据维度吧。其原因是你的信号y1和时间t长度不想等,改为surf(t1,f,abs(coefs))估计就OK了。

粤语残片 发表于 2013-10-18 15:10

江树空 发表于 2013-10-18 12:15 static/image/common/back.gif
我拿你的程序用仿真信号试了下,绘图没问题啊,你再查查你的数据维度吧。其原因是你的信号y1和时间t长度不 ...

大侠,您就是个活雷锋啊,谢谢!谢谢!
页: [1]
查看完整版本: 如何读取小波时频图的信息