这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » 小波时频(尺度)图的绘制原理与实现[

共1条 1/1 1 跳转至

小波时频(尺度)图的绘制原理与实现[

助工
2014-12-18 19:42:25     打赏
小波时频(尺度)图的绘制原理与实现

-、绘制原理

    1.需要用到的小波工具箱中的三个函数  cwt(),centfrq(),scal2frq()

    COEFS = cwt(S,SCALES,'wname') 
    说明:该函数能实现连续小波变换,其中S为输入信号,SCALES为尺度,wname为小波名称。

    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,将只能得到正确的尺度-时间-小波系数图,而无法将其转换为频率-时间-小波系数图。这是因为此时的频率间隔不为常数。
此时,可通过查表的方法将尺度转化为频率或直接修改尺度轴标注。同理,利用本帖所介绍的方法只能得到频率-时间-小波系数图,不能得到正确的尺度-时间-小波系数图。



二、应用例子

    下面给出一实际例子来说明小波时频图的绘制。所取仿真信号是由频率分别为100Hz和200Hz的两个正弦分量所合成的信号。

     clear;
     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);   %将尺度转换为频率
     imagesc(t,f,abs(coefs));          %绘制色谱图
     colorbar;
     xlabel('时间 t/s');
     ylabel('频率 f/Hz');
     title('小波时频图');


共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]