第1个回答 2022-06-13
设a为尺度,fs为采样频率,Fc为小波中心频率,则a对应的实际频率Fa为
Fa=Fc×fs/a (1)
显然,为使小波尺度图的频率范围为(0,fs/2),尺度范围应为(2*Fc,inf),其中inf表示为无穷大。在实际应用中,只需取尺度足够大即可。
没有说明和大家没有讲到是因为没人在小波变换中才去“确定”它们,说白了这两参数不是让你去确定的,是让你去设定的,你对小波的应用方法就没搞清,你要搞清楚的是它们如何影响处理结果的,按照你处理的目的设置不同的值,这牵扯到小波基的某些数学指标是如何影响处理结果的问题,要说的就多了。
在cmorwavf函数的帮助文档中,列举了cmor1.5-1的函数波形,
中心频率(fc)可以这样看,从横轴0开始的波峰到横轴1的波峰,刚好是正弦波的一个完整周期,其经历的时间就应是频率值的倒数,那么中心频率刚好是1.
下面是cmor1.5-2的函数波形,从横轴0开始的波峰到横轴0.5的波峰也是一个完整周期,经历的时间为0.5,取倒数,中心频率刚好是2.这与你设定的fc一致,也就是说fc就是这么影响Morlet复小波的。当你要消噪或研究高频信息,对于同一个数据信号cmor1.5-2肯定比cmor1.5-1更能消除细小的噪声和得到更高频率的信息。
fb越大时域宽度越长,支撑长度越长,产生高幅值的小波系数也多,在检测信号奇异性的时候往往希望能有一定数量的波峰波谷(在小波中就意味着较长的支撑和较高的消失矩),当然也不是越多越好,这要看待分析信号的情况,所以这玩意是你先设定,做完CCWT后,看看效果是否满意,再来根据你要研究信号或处理的目的,更改fc和fb的值,不是开始就确定它们(再说在处理之前你如何确定,即使你确定了又有啥意义,在CCWT之前的一切确定是毫无意义的,只有出了结果反复修改你的设定才能最终用“确定”一词)。
总结:fc的大小影响的是小波的频率:fc越大,小波频率越大,因此当你要消噪或研究高频信息,fc增大的话更能消除细小的噪声和得到更高频率的信息。
fb影响的是小波的支撑长度,fb越大,时域宽度越长,支撑长度也越长,产生高幅值的小波系数也就越多,
-、绘制原理
1.需要用到的小波工具箱中的三个函数
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和2
00Hz的两个正弦分量所合成的信号。
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小
波的带宽参数和中心频率取得越大,时频图上反映的时频聚集性越好。
首先生成一个信号:
设置fc=0.1:0.5:8,fb=10:10:80,观察生成的时频图,查看参数对小波变换的影响。
1. 采样频率和信号点数之间的关系的影响
当采样频率fs与信号点数相同时,即倍数相同时,发现:
时间上为1s, 频率上显示的时真实值,这个时候时频图比较完美。此时参数为:fs=2^16,N=2^16,fc=1.5,fb=3,totalscal=2^7=128
增大fs,当fs为信号点数的两倍时,此时时间上为0.5s,频率坐标范围增大1倍,频率显示的仍是真实值。
减小fs,当fs为信号点数的一半时,此时时间上为2s,频率坐标范围减小1倍,频率显示的仍是真实值。仔细观察,此时的时频图上显示的有杂波。
如果接着减小,当减小到原信号的1/4时,频率轴坐标为采样频率的一半,因此频率轴范围跟着缩小相同的倍数,这时由于采样频率小于信号的最大频率,此时频率轴显示的并不是频率的真实值。而且时频图出现了错误。所以 采样频率一定要大于信号的最大频率的2倍以上。
下面观察采样频率与信号点数之间的关系,尝试增大采样频率来找到与信号点数之间的限制。
当信号点数与信号的最大频率近似相等时,设置采样频率为信号点数的2倍时,此时效果并不好,一方面有杂波,另一方面,采样频率与信号最高频率的两倍相离过小。
当信号点数与信号的最大频率近似相等时,设置采样频率为信号点数的4倍时,此时效果比2倍时要好一点,但存在高频信号分辨率低,有少量杂波存在的问题
当采样频率增加过大时,会出现下列情况,效果反而不好
首先以下列参数设置为基准
fc的值增大从1.5增大到2,发现出现了严重的杂波:
将fc的值增大从1.5增大到3:
fc增大到5
fc增大到7:
当fc从1.5减少到1时,低频处有杂波出现而且频率分辨率明显降低。
当从1.5减少到0.5时:
下面四张图分别是fb取20,40,80,120的值时的时频图,从中可以看出,fb的取值增大可以增大频率分辨率,但是不像fc的值那样敏感,当增大的范围过大时,也会在不同频率上出现杂波,但是相比fc变动引起的杂波来说很小。
fb值减小时,频率分辨率会降低,有杂波出现,但是和增大fb时一样,杂波成分分布广但是较小。
fb值减小时,频率分辨率会降低,有杂波出现,但是和增大fb时一样,杂波成分分布广但是较小。下图fb取值为1.
基准:fs=2^15,N=2^15,fc=1.5,fb=3,totalscal=2^7=128
增大尺度参数:从128增加到256
从128增加到512
从128增加到1024:
可以看出,当增大尺度值时,低频杂波分量出现,且数值较大,直接盖过信号频率分量
下面是减小尺度值的情况:
从128减小到64:
从128减小到32:
减小到16:
可以减尺度值,分辨率逐渐变差,但是无低频杂波分量出现。