zoukankan      html  css  js  c++  java
  • 连续小波时频图绘制原理    连续小波变换尺度与信号频率的关系

     http://www.ilovematlab.cn/thread-96706-1-1.html

    -、连续小波时频图绘制原理    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)应用时只须改变wavename和totalscal两个参数即可。          (2)在这个例子中,最好选用复的morlet小波,其它小波的分析效果不好,而且morlet小波的带宽参数和中心频率取得越大,时频图上反映的时频聚集性越好。



    [c,l]=wavedec(y1,3,'db1'); %小波分解采用db1函数3层分解

    a3=appcoef(c,l,'db1',3); %提取一维小波低频系数

    d3=detcoef(c,l,3); %提取一维小波高频系数

    d2=detcoef(c,l,2); d1=detcoef(c,l,1); 


    小波变换中尺度与频率的关系:           fa=(f0/a).Ts

    其中:fa:信号模拟频率;          

      f0:小波的频窗中心频率;     

    a:尺度参数;          

     Ts:采样间隔。



    http://www.ilovematlab.cn/thread-172664-1-1.html

    对信号进行连续小波变换后,小波尺度a与其对应的信号频率Fa之间的关系式为Fa=Fc/(a*Ts) =Fs*Fc/a    其中Fc为给定小波的中心频率,Ts为信号的采样周期。Fc与具体的小波有关,如对多贝西小波(db小波),有如下关系:   

    小波db2   db3  db4  db5  db6  db7

    中心频率0.6667  0.8  0.7143  0.6667 0.7273  0.6923

        问题是:对这个中心频率如何准确理解?


  • 相关阅读:
    C#/JAVA 程序员转GO/GOLANG程序员笔记大全(DAY 04)
    C#/JAVA 程序员转GO/GOLANG程序员笔记大全(DAY 03)
    C#/JAVA 程序员转GO/GOLANG程序员笔记大全(DAY 02)
    C#/Java 程序员转GO/golang程序员笔记大全(day 01)
    selenium grid配置
    JUnit和TestNG的区别
    【转载】 HttpClient、HttpURLConnection、OKHttp和Volley优缺点和性能对比
    selenide总结
    docker操作
    python连接oracle数据库
  • 原文地址:https://www.cnblogs.com/gisalameda/p/12840564.html
Copyright © 2011-2022 走看看