该快速傅立叶变换需要操作,而快速小波变换需要。但是,FWT具体计算什么呢?O(N )
尽管经常将它们进行比较,但FFT和FWT似乎是苹果和橘子。据我了解,将STFT(随时间变化的小块FFT)与复杂的Morlet WT进行比较会更合适,因为它们都是基于复杂正弦波的时频表示(如果我错了,请纠正我) )。通常以如下图显示:
(另一个例子)
左图显示STFT如何随时间推移彼此堆叠在一起的一堆FFT(此表示形式是频谱图的起点),而右图显示二进线WT,其在高频和更高频率下具有更好的时间分辨率低频下的分辨率(此表示称为比例图)。在此示例中,STFT的是垂直列数(6),并且单个 FFT运算可从样本中计算出系数的单个行。总共是8个FFT,每个6点,或时域中的48个采样。O(N log N )N N
我不明白的是:
单个 FWT数学运算可以计算多少个系数,它们在上面的时频图上位于什么位置?
一次计算可以填充哪些矩形?
如果我们使用这两者来计算等时的时频系数块,是否可以获得相同数量的数据?
FWT是否仍比FFT效率更高?
使用PyWavelets的具体示例:
In [2]: dwt([1, 0, 0, 0, 0, 0, 0, 0], 'haar')
Out[2]:
(array([ 0.70710678, 0. , 0. , 0. ]),
array([ 0.70710678, 0. , 0. , 0. ]))
它创建两组4个系数,因此与原始信号中的样本数相同。但是这8个系数和图中的图块之间是什么关系?
更新:
实际上,我可能做错了,应该使用wavedec()
,它可以进行多级DWT分解:
In [4]: wavedec([1, 0, 0, 0, 0, 0, 0, 0], 'haar')
Out[4]:
[array([ 0.35355339]),
array([ 0.35355339]),
array([ 0.5, 0. ]),
array([ 0.70710678, 0. , 0. , 0. ])]