Robotech 发表于 2009-5-27 15:08

MATLAB中小波分析尺度/频率转换的基本思想


不知道有人发过没,发一下个人的理解吧



MATLAB中计算小波分析尺度所对应的频率,采用的计算方法为:
A way to do it is to compute the center frequency, Fc, of the wavelet and to use the following relationship.
Fa=Fc/(a*Delta) =Fs*Fc/a
where
[*]a is a scale. [*]Delta is the sampling period= 1/Fs[*]Fc is the center frequency of a wavelet in Hz. [*]Fa is the pseudo-frequency corresponding to the scale a, in Hz. 采用的计算函数为F = scal2frq(A,'wname',DELTA)其内部调用了如下计算函数F = centfrq(wname)./(a.*delta);



其中centfrq为小波的中心频率计算函数,中心频率的含义可由其MATLAB代码实现分析出来:
MATLAB中,用小波母函数的DFT中,幅度(模)最大点所对应的频率,作为对小波函数“中心频率”的估计(The frequency maximizing the FFT of the wavelet modulus is Fc),并用于尺度/频率的转换。
这是一种“近似”方法,这也是为什么MATLAB把计算出的频率称为pseudo-frequencies

switch wtype

case 1 , = wavefun(wname,iter);

case 2 , = wavefun(wname,iter);

case 3 , = wavefun(wname,iter);

case 4 , = wavefun(wname,iter);

case 5 , = wavefun(wname,iter);
end


T = max(xval)-min(xval);
% T is the size of the domain of psi.
n = length(psi);
psi = psi-mean(psi);
% psi is numerically centered.
psiFT = fft(psi);
% computation of the modulus
sp = (abs(psiFT));
% of the FT.




% Compute arg max of the modulus of the FT (center frequency).
= max(sp);
if indmax > n/2
indmax = n-indmax+2;
% indmax is always >= 2.
end







per = T/(indmax-1);

% period corresponding to the maximum.

freq = 1/per;

% associated frequency.

计算各种小波函数的“波形”,给出“采样”的横纵坐标(当然了,计算机只能处理有限的离散点),分别为xval、psi。
采样点数为2^iter个,iter默认取8,即默认采256点

























计算时域支撑宽度,即横坐标宽度

小波函数的采样点数

函数值去“直流”




小波函数做离散傅里叶变换


计算变换后有限复序列各元素的模


计算模最大的点对应的下标

考虑到实信号FFT结果是双边谱,必须考虑下标在负频率部分的情形,此时减去indmax才是对应的正频率。这是计算机计算精度有限造成的,理论上实小波函数的FFT应该是严格对称的。所以模最大点在正负频率各一个;但计算机实现必然只有一个,可能在正也可能在负。这里也可以看出MATLAB的算法是十分可靠细致的,考虑到了方方面面。





用模最大点对应的“频率”作为信号频率;注意该函数里的freq还是归一化的频率。

这也是为什么在scalfrq中要除以一个采样间隔。



[ 本帖最后由 Robotech 于 2009-5-27 15:26 编辑 ]

wangxinseu 发表于 2009-5-27 16:10

回复 楼主 Robotech 的帖子

感觉对理解很有用!
问一下,比如对图像信号来说,逐个像素的取值处理,那么采样频率是不是就是1?即fs=1?
因为看到文献中大都是fa=fc/a,想知道这样理解的对不对?

cuixuepeng 发表于 2009-9-14 12:08

回复 楼主 Robotech 的帖子

楼主,问一下,如果求得了尺度频率,有什么用?对于确定一段信号的频率有什么帮助?急!!!谢谢!
信号在附件中

Robotech 发表于 2009-9-18 13:55

本帖最后由 VibInfo 于 2016-10-13 15:28 编辑

原帖由 cuixuepeng 于 2009-9-14 12:08 发表
楼主,问一下,如果求得了尺度频率,有什么用?对于确定一段信号的频率有什么帮助?急!!!谢谢!
信号在附件中
尺度——>频率后,时间-尺度图,可以转换为时间-频率图,更容易与物理意义对应

其他原文和MATLAB帮助已经很明白了

glllj 发表于 2011-4-14 14:43

回复 4 # Robotech 的帖子

请教一下,时间和尺度是什么关系呢?怎么确定的啊?
页: [1]
查看完整版本: MATLAB中小波分析尺度/频率转换的基本思想