Швидке перетворення Фур'є приймає операції, в той час як швидкий вейвлет - перетворення займає O ( N . Але що, конкретно, обчислює FWT?
Хоча їх часто порівнюють, здається, що FFT і FWT - це яблука та апельсини. Як я розумію, було б більш доцільним порівняти STFT (FFTs невеликих шматочків з часом) з складними Morlet WT , оскільки вони обидва представлення частоти на основі складних синусоїд (будь ласка, виправте мене, якщо я помиляюся ). Це часто показано на такій схемі:
( Інший приклад )
Ліворуч показано, як STFT - це купа FFT, розміщених один на одного в міру проходження часу (це представлення є джерелом спектрограми ), а праворуч - діадичний WT, який має кращу роздільну здатність часу на високих частотах і кращу частоту роздільна здатність на низьких частотах (таке подання називається скалограмою ). У цьому прикладі для STFT - це кількість вертикальних стовпців (6), і одна операція FFT O ( N log N ) обчислює один рядок N коефіцієнтів з N вибірок. У загальній складності 8 FFT з 6 балів у кожному, або 48 зразків у часовій області.
Що я не розумію:
Скільки коефіцієнтів робить один обчислює операція 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. ])]