이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

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')

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

먼저 신호를 생성합니다.

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 객체에 대한 자세한 내용은 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] Pennebaker, W. B., and J. L. Mitchell. JPEG Still Image Data Compression Standard. New York: Van Nostrand Reinhold, 1993.

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

확장 기능

참고 항목

| | |

R2006a 이전에 개발됨