푸리에 변환은 고속 얻어 그동안, 조작 웨이블렛 변환 고속이 얻어 O ( N을 ) . 그러나 구체적으로 FWT는 무엇을 계산합니까?
그것들은 종종 비교되지만 FFT와 FWT는 사과와 오렌지처럼 보입니다. 내가 이해함에 따라 STFT (시간이 지남에 따라 작은 청크의 FFT)를 복잡한 Morlet WT 와 비교하는 것이 더 적절합니다 . 복잡한 정현파를 기반으로하는 시간-주파수 표현이기 때문에 (잘못되면 정정하십시오) ). 이것은 종종 다음과 같은 다이어그램으로 표시됩니다.
( 다른 예 )
왼쪽은 STFT가 시간이 지남에 따라 서로 위에 쌓여있는 FFT의 무리를 보여줍니다 (이 표현은 스펙트로 그램 의 원점입니다 ). 오른쪽은 고주파수에서 더 나은 시간 해상도를 가진 이진 WT를 보여줍니다. 낮은 주파수에서의 해상도 (이 표현을 스 칼로 그램 이라고합니다 ). 이 예에서, STFT위한 수직 열의 수 (6)과 싱글 O ( N 로그 N ) FFT 동작의 단일 행 산출 N의 행 계수 N의 샘플. 합계는 각각 6 포인트의 8 FFT 또는 시간 도메인에서 48 샘플입니다.
내가 이해하지 못하는 것 :
단일 계산으로 어떤 사각형이 채워 집니까?
둘 다를 사용하여 동일한 면적의 시간-주파수 계수 블록을 계산하면 같은 양의 데이터를 얻습니까?
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. ])]