我在MATLAB中使用Morlet小波对我的数据进行连续小波分析。但是默认小波的中心频率是5,而我想要的是6。所以我使用了一种不同的方法来构建所需的小波,使用的是psi函数,即
psi、x=cmorwavf(Lb、Ub、n5、fb、fc)
经过卷积后,我得到了小波功率谱。但我被困在COI,也就是影响力的锥体。
我发现需要零填充,然后我就可以使用conofinf了。但是这个'conofinf‘需要一个默认的小波字符串。
所以我指出了我的问题: 1.如何将我的数据归零以进行小波分析(如果有任何特定的方法)?2.如何在我的小波功率谱中指定COI?
任何帮助都将是伟大的!!
发布于 2015-08-27 23:12:53
零填充不是必须的,但建议您这样做。通常,你将你的信号填充到比你的信号长度大2的下一个幂。您可以手动完成此操作,如下所示:
newSignal = [zeros(1,floor(n)), oldSignal, zeros(1,ceil(n))];
其中n是所需的零填充长度除以2:
n = ( 2^nextpow2(length(oldSignal)) - length(oldSignal) ) / 2;
它不一定要两边都有;它可以从右边填充。它也不应该是零填充;它可以是对称的,重复等,无论是更好的减少边缘效果。你可以在第2节中阅读更多关于信号填充的内容,例如在this paper中。
你应该小心使用零填充(和任何类型的填充),它也会引入伪影,例如,零填充会降低边缘的功耗。
零填充与COI无关。即使没有零填充,你也应该能够计算它。
使用MATLAB的conofinf非常方便,但由于您不能做到这一点,您可以尝试使用MATLAB帮助中的公式自己计算COI:
|t-u| <= sB
其中u是小波的平移参数,s是尺度参数,-B,+B是小波的有效支持。
基本上,这意味着在小波变换的边缘(有时是t1和tend),COI等于每个尺度上的小波长度的一半。您可以逐点为每个比例和打印计算它。
最后注意:无论您选择哪种类型的填充,您都不应该忘记在结果小波变换中剪切它(在计算COI之后)。
希望能有所帮助。
https://stackoverflow.com/questions/29277455
复制相似问题