dct 예제

  • 0

dct 예제

DCT는 또한 Chebyshev 다항식과 밀접한 관련이 있으며, 빠른 DCT 알고리즘(아래)은 예를 들어 Clenshaw-Curtis 사분면에서 일련의 Chebyshev 다항식에 의한 임의 함수의 체비셰프 근사치에 사용됩니다. 실제로 일반 FFT를 사용하는 DCT 알고리즘조차도 실제 대칭 데이터의 더 큰 FFT에서 중복 작업을 가지치기하는 것과 동일하며 산술 개수의 관점에서도 최적일 수 있습니다. 예를 들어 형식-II DCT는 크기 4 N {displaystyle 4N}의 DFT와 동일하며, 짝수 인덱싱된 요소가 0인 실제 짝수 대칭입니다. FFT를 통해 이것을 계산하는 가장 일반적인 방법 중 하나 (예 : FFTPACK 및 FFTW에 사용되는 방법) Narasimha & Peterson (1978)과 Makhoul (1980)에 의해 설명되었으며, 이 방법은 뒤늦게 radix-4 데시메이션 – 인 타임 쿨리 – 투키의 한 단계로 볼 수 있습니다. 알고리즘은 DCT II에 해당하는 „논리”실제 – 짝수 DFT에 적용. (radix-4 단계는 크기 4 N {displaystyle 4N} DFT를 4 개의 크기로 줄입니다- N {displaystyle N} 실제 데이터의 DFT, 그 중 두 개는 0이고 두 개는 짝수 대칭에 의해 서로 동일하므로 실제 데이터 플러스 O의 단일 크기 N {displaystyle N} FFT를 제공합니다. N) {디스플레이 스타일 O(N)} 나비.) 짝수 인덱싱된 요소는 0이므로 이 radix-4 단계는 분할 라디ix 단계와 정확히 동일합니다. 후속 크기- N {displaystyle N} 실제 데이터 FFT도 실제 데이터 분할-radix 알고리즘에 의해 수행 되는 경우 (Sorensen 등. 1987에서와 같이), 다음 결과 알고리즘 실제로 2의 힘에 대 한 가장 낮은 게시 된 산술 수 일치 DCT-II (2 N 로그 2 N N + 2 {디스플레이 스타일 2Nlog _{2}N-N+2} 실제 산술 연산 [a]). 최근 작업 수가 17 9 N 로그 2 N + O (N) {frac {17}{9}}}log _{2}N+O(N)}로 최근 감소하면서 실제 데이터 FFT도 사용합니다. [36] 따라서 산술적 관점에서 FFT를 통해 DCT를 계산하는 것에 대해 본질적으로 나쁜 것은 없습니다. (실질적으로 별도의 FFT 루틴을 호출할 때 함수 호출 오버헤드는 작은 N {displaystyle N}에 중요할 수 있지만, 이는 언롤링/인라이닝을 통해 해결할 수 있기 때문에 알고리즘 문제가 아닌 구현입니다.) 위의 코드는 N x N 행렬에서 DCT 변환을 구현하는 알고리즘의 한 예에 불과합니다.