声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 5834|回复: 8

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

[复制链接]
发表于 2013-10-10 08:55 | 显示全部楼层 |阅读模式

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

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

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

37-47.PNG

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

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

评分

1

查看全部评分

 楼主| 发表于 2013-10-15 15:25 | 显示全部楼层

多谢大侠赐教,我是材料加工专业的,所以信号分析是新接触,算法真的不懂,这是我做时频图的代码,请问这样的算法得到的是什么(功率谱/幅值/功率谱密度)?
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([16,26,0,10]);
     colorbar;
     xlabel('时间 t/s');
     ylabel('频率 f/Hz');
     title('小波时频图');
发表于 2013-10-17 10:21 | 显示全部楼层
粤语残片 发表于 2013-10-15 15:25
多谢大侠赐教,我是材料加工专业的,所以信号分析是新接触,算法真的不懂,这是我做时频图的代码,请问这 ...

你这个算法其结果应该是代表的幅值,你的程序有些地方可能需要更改,如下:
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([16,26,0,10]);
colorbar;
xlabel('时间 t/s');
ylabel('频率 f/Hz');
title('小波时频图');

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

利用你的程序对一正弦扫频信号的分析结果

利用你的程序对一正弦扫频信号的分析结果

评分

1

查看全部评分

 楼主| 发表于 2013-10-17 15:27 | 显示全部楼层
本帖最后由 粤语残片 于 2013-10-17 15:48 编辑
江树空 发表于 2013-10-17 10:21
你这个算法其结果应该是代表的幅值,你的程序有些地方可能需要更改,如下:
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
哇~真的是太感谢太感谢了,醍醐灌顶啊,STFT导师已经做出来了,现在是想通过频域特征找出故障信号的时间节 ...

你先在workspace里看你t、f的维度,再看看coefs的维度,看是否一致?要别人帮忙查看的话,最好能贴出你完整的程序;你采样率多少?如果要重点关注低频的话,尺度数确实要求多一些,但是计算量太可怕了,就拿你的1024个尺度来说,画出图来巨卡。再说了小波时频在低频频率分辨率虽好,但时间分辨率差啊,估计你那故障信号的时间节点也不好定。
 楼主| 发表于 2013-10-18 09:12 | 显示全部楼层
江树空 发表于 2013-10-17 21:18
你先在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
内个,有点不好意思了,维度是什么,不知道怎么看,如果不一样应该怎么办呢,错误提示的意思好像就是维度 ...

我拿你的程序用仿真信号试了下,绘图没问题啊,你再查查你的数据维度吧。其原因是你的信号y1和时间t长度不想等,改为surf(t1,f,abs(coefs))估计就OK了。
查看数据维度.jpg
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2013-10-18 15:10 | 显示全部楼层
江树空 发表于 2013-10-18 12:15
我拿你的程序用仿真信号试了下,绘图没问题啊,你再查查你的数据维度吧。其原因是你的信号y1和时间t长度不 ...

大侠,您就是个活雷锋啊,谢谢!谢谢!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-4-30 14:30 , Processed in 0.074370 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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