Main Content

idct

이산 코사인 역변환

설명

예제

x = idct(y)는 입력 배열 y에 대한 이산 코사인 역변환을 반환합니다. 출력값 xy와 크기가 같습니다. y가 둘 이상의 차원을 가지는 경우 idct는 크기가 1보다 큰 첫 번째 배열 차원을 따라 동작합니다.

x = idct(y,n)은 변환을 수행하기 전에 길이가 n이 되도록 y의 관련 차원을 0으로 채우거나 자릅니다.

x = idct(y,n,dim)은 차원 dim을 따라 변환을 계산합니다. 차원을 입력하고 n의 디폴트 값을 사용하려면 두 번째 인수를 빈 값 []로 지정하십시오.

예제

y = idct(___,'Type',dcttype)은 계산할 이산 코사인 역변환의 유형을 지정합니다. 자세한 내용은 이산 코사인 역변환 항목을 참조하십시오. 이 옵션은 위에 열거된 구문과 함께 사용할 수 있습니다.

예제

모두 축소

1초 동안 1000Hz로 샘플링된 25Hz 정현파로 구성된 신호를 생성합니다. 정현파는 분산이 0.01인 백색 가우스 잡음에 묻혀 있습니다.

rng('default')

Fs = 1000;
t = 0:1/Fs:1-1/Fs;
x = sin(2*pi*25*t) + randn(size(t))/10;

시퀀스의 이산 코사인 변환을 계산합니다. 1000개의 DCT 계수 중에서 유의미한 계수가 몇 개인지 확인합니다. 유의성의 임계값으로 1을 선택합니다.

y = dct(x);

sigcoeff = abs(y) >= 1;

howmany = sum(sigcoeff)
howmany = 17

유의미한 성분만 사용하여 신호를 복원합니다.

y(~sigcoeff) = 0;

z = idct(y);

원래 신호와 복원된 신호를 플로팅합니다.

subplot(2,1,1)
plot(t,x)
yl = ylim;
title('Original')

subplot(2,1,2)
plot(t,z)
ylim(yl)
title('Reconstructed')

Figure contains 2 axes objects. Axes object 1 with title Original contains an object of type line. Axes object 2 with title Reconstructed contains an object of type line.

랜덤 신호를 벤치마크로 사용하여 이산 코사인 변환의 여러 변형이 직교 변환인지 확인합니다.

먼저 신호를 생성합니다.

s = randn(1000,1);

DCT-1과 DCT-4가 서로 역인지 확인합니다.

dct1 = dct(s,'Type',1);
idt1 = idct(s,'Type',1);

max(abs(dct1-idt1))
ans = 1.3323e-15
dct4 = dct(s,'Type',4);
idt4 = idct(s,'Type',4);

max(abs(dct4-idt4))
ans = 1.3323e-15

DCT-2와 DCT-3이 서로 역인지 확인합니다.

dct2 = dct(s,'Type',2);
idt2 = idct(s,'Type',3);

max(abs(dct2-idt2))
ans = 4.4409e-16
dct3 = dct(s,'Type',3);
idt3 = idct(s,'Type',2);

max(abs(dct3-idt3))
ans = 1.1102e-15

입력 인수

모두 축소

입력 이산 코사인 변환으로, 실수 벡터 또는 복소수 벡터, 행렬, N차원 배열 또는 gpuArray 객체로 지정됩니다.

gpuArray (Parallel Computing Toolbox) 객체에 대한 자세한 내용은 GPU에서 MATLAB 함수 실행하기 (Parallel Computing Toolbox) 항목과 GPU 연산 요구 사항 (Parallel Computing Toolbox) 항목을 참조하십시오.

예: dct(sin(2*pi*(0:255)/4))는 정현파의 이산 코사인 변환을 지정합니다.

예: dct(sin(2*pi*[0.1;0.3]*(0:39))')는 2채널 정현파의 이산 코사인 변환을 지정합니다.

데이터형: single | double
복소수 지원 여부:

역 변환 길이로, 양의 정수 스칼라로 지정됩니다.

데이터형: single | double

함수 동작이 수행될 차원으로, 양의 정수 스칼라로 지정됩니다.

데이터형: single | double

이산 코사인 역변환 유형으로, 1에서 4까지의 양의 정수 스칼라로 지정됩니다.

데이터형: single | double

출력 인수

모두 축소

이산 코사인 역변환으로, 실수 벡터 또는 복소수 벡터, 행렬, N차원 배열 또는 gpuArray 객체로 반환됩니다.

세부 정보

모두 축소

이산 코사인 역변환

이산 코사인 역변환은 이산 코사인 변환(DCT) 계수에서 시퀀스를 복원합니다. idct 함수는 dct 함수의 역입니다.

DCT에는 네 가지 표준 변형이 존재합니다. 크로네커 델타 δkℓ을 갖는 길이가 N인 변환 신호 y에 대해, 역은 다음과 같이 정의됩니다.

  • DCT-1의 역:

    x(n)=2N1k=1Ny(k)11+δk1+δkN11+δn1+δnNcos(πN1(k1)(n1))

  • DCT-2의 역:

    x(n)=2Nk=1Ny(k)11+δk1cos(π2N(k1)(2n1))

  • DCT-3의 역:

    x(n)=2Nk=1Ny(k)11+δn1cos(π2N(2k1)(n1))

  • DCT-4의 역:

    x(n)=2Nk=1Ny(k)cos(π4N(2k1)(2n1))

이 수열은 일반적인 n = 0k = 0이 아니라 n = 1k = 1부터 인덱싱됩니다. 그 이유는 MATLAB® 벡터의 범위는 0부터 N – 1까지가 아니라 1부터 N까지이기 때문입니다.

DCT의 모든 변형은 유니타리(Unitary)(또는 직교(orthogonal))입니다. 순방향 변환을 구하려면 각 정의에서 k와 n을 서로 바꾸십시오. DCT-1과 DCT-4가 서로 역입니다. DCT-2와 DCT-3이 서로 역입니다.

참고 문헌

[1] Jain, A. K. Fundamentals of Digital Image Processing. Englewood Cliffs, NJ: Prentice-Hall, 1989.

[2] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Discrete-Time Signal Processing. 2nd Ed. Upper Saddle River, NJ: Prentice Hall, 1999.

[3] Pennebaker, W. B., and J. L. Mitchell. JPEG Still Image Data Compression Standard. New York: Van Nostrand Reinhold, 1993.

확장 기능

버전 내역

R2006a 이전에 개발됨

참고 항목

| (Image Processing Toolbox) | (Image Processing Toolbox) |