声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 5178|回复: 15

[小波] 利用小波变换进行时频分析的小波选择问题

  [复制链接]
发表于 2013-2-27 16:01 | 显示全部楼层 |阅读模式

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

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

x
在利用小波变换进行时频分析时,利用不同的小波得到不同的图形,用小波cmor3-3得到的时频图:

cgau8

cgau8
利用复小波cgau8得到的时频图: 1.jpg
在进行时频分析的时候,是如何选择小波的,包括一般的小波和复小波,而获得较好的图形效果?
回复
分享到:

使用道具 举报

发表于 2013-3-7 13:24 | 显示全部楼层
你好,我想问一下,你这个时间---频率图是怎么出来的,我参考书上的做出来的怎么全是时间---尺度图啊,谢谢
 楼主| 发表于 2013-3-8 18:17 | 显示全部楼层
绘制原理

    1.需要用到的小波工具箱中的三个函数

    COEFS = cwt(S,SCALES,'wname')
    说明:该函数能实现连续小波变换,其中S为输入信号,SCALES为尺度,wname为小波名称。
          COEFS为进行连续小波变换后返回的系数矩阵
        
    FREQ = centfrq('wname')
    说明:该函数能求出以wname命名的母小波的中心频率。

    F = scal2frq(A,'wname',DELTA)
    说明:该函数能将尺度转换为实际频率,其中A为尺度,wname为小波名称,DELTA为采样周期。

    注:这三个函数还有其它格式,具体可参阅matlab的帮助文档。

    2.尺度与频率之间的关系

    设a为尺度,fs为采样频率,Fc为小波中心频率,则a对应的实际频率Fa为
                     
                      Fa=Fc×fs/a                                     (1)

显然,为使小波尺度图的频率范围为(0,fs/2),尺度范围应为(2*Fc,inf),其中inf表示为无穷大。在实际应用中,只需取尺度足够大即可。
   
    3.尺度序列的确定

    由式(1)可以看出,为使转换后的频率序列是一等差序列,尺度序列必须取为以下形式:
   
                 c/totalscal,...,c/(totalscal-1),c/4,c/2,c        (2)  

其中,totalscal是对信号进行小波变换时所用尺度序列的长度(通常需要预先设定好),c为一常数。

   下面讲讲c的求法。
     
    根据式(1)容易看出,尺度c/totalscal所对应的实际频率应为fs/2,于是可得

                      c=2×Fc/totalscal                               (3)

将式(3)代入式(2)便得到了所需的尺度序列。
   
    4.时频图的绘制

    确定了小波基和尺度后,就可以用cwt求小波系数coefs(系数是复数时要取模),然后用scal2frq将尺度序列转换为实际频率序列f,
最后结合时间序列t,用imagesc(t,f,abs(coefs))便能画出小波时频图。

    注意:直接将尺度序列取为等差序列,例如1:1:64,将只能得到正确的尺度-时间-小波系数图,而无法将其转换为频率-时间-小波系数图。这是因为此时的频率间隔不为常数。
此时,可通过查表的方法将尺度转化为频率或直接修改尺度轴标注。同理,利用本帖所介绍的方法只能得到频率-时间-小波系数图,不能得到正确的尺度-时间-小波系数图

说明:(1)应用时只须改变wavename和totalscal两个参数即可。
              (2)在这个例子中,最好选用复的morlet小波,其它小波的分析效果不好,而且morlet小波的带宽参数和中心频率取得越大,时频图上反映的时频聚集性越好。

评分

1

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 2013-3-12 13:52 | 显示全部楼层
发表于 2013-3-28 16:54 | 显示全部楼层
分析的不错,谢谢
发表于 2013-3-29 13:55 | 显示全部楼层
想问一下:是小波选择的不同,出来的图在频率轴上表现出来的粗细不一样吗?还是与其他的有关?要是一个有带宽的信号从图中怎么能看出带宽呢?
发表于 2013-4-17 22:47 | 显示全部楼层
问个问题,有速学用matlab做小波分析提取特征谱的吗?
发表于 2013-9-26 10:07 | 显示全部楼层
zhangxiskd 发表于 2013-3-8 18:17
绘制原理

    1.需要用到的小波工具箱中的三个函数

请问我用以上方法得图,怎么读呢,包含什么信息

补充内容 (2013-10-10 09:05):
totalscal怎么设定
图图.PNG
发表于 2013-11-18 00:24 | 显示全部楼层
发表于 2013-11-18 00:25 | 显示全部楼层
发表于 2013-11-18 15:08 | 显示全部楼层
楼主,你可以把你出上面两个图的程序  给贴一下吗。。。谢谢
发表于 2013-11-22 14:22 | 显示全部楼层
你好,小波变换后,如何求得聚焦的频率
发表于 2013-12-6 08:59 | 显示全部楼层
杰式悦敏 发表于 2013-11-18 15:08
楼主,你可以把你出上面两个图的程序  给贴一下吗。。。谢谢

clear;clf;close all;
clc;
fs=1024;                          %采样频率
f1=100;                        
f2=200;
t=0:1/fs:1;
s=sin(2*pi*f1*t)+sin(2*pi*f2*t);  %两个不同频率正弦信号合成的仿真信号
     %%%%%%%%%%%%%%%%%小波时频图绘制%%%%%%%%%%%%%%%%%%
wavename='cmor3-3';
totalscal=256;                    %尺度序列的长度,即scal的长度
wcf=centfrq(wavename);            %小波的中心频率
cparam=2*wcf*totalscal;           %为得到合适的尺度所求出的参数
a=totalscal:-1:1;  
scal=cparam./a;                   %得到各个尺度,以使转换得到频率序列为等差序列
coefs=cwt(s,scal,wavename);       %得到小波系数
f=scal2frq(scal,wavename,1/fs);   %将尺度转换为频率
figure(1),plot(t,s);              %绘制原始信号图

figure(2);                        %绘制信号的傅里叶变换的频谱图
N=length(t);
y=fft(s,N);
amg=abs(y);
plot([1:N/2]*fs/N,amg(1:N/2)*2/N);

figure(3);
c=cwt(s,a,wavename,'plot');    %直接使用尺度

figure(4),imagesc(t,f,abs(coefs));          %绘制色谱图
colorbar;
xlabel('时间 t/s');
ylabel('频率 f/Hz');
title('小波时频图');
发表于 2013-12-7 14:46 | 显示全部楼层
本帖最后由 杰式悦敏 于 2013-12-7 14:56 编辑
珞珈山下 发表于 2013-12-6 08:59
clear;clf;close all;
clc;
fs=1024;                          %采样频率

嘿嘿嘿  我已经明白我之前是哪的问题了   搞定了哈  谢谢你
回复 支持 0 反对 1

使用道具 举报

发表于 2013-12-11 20:34 | 显示全部楼层
感觉很不错的程序,谢谢分享,下来研究一下。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-17 19:32 , Processed in 0.093894 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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