Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

idct

Transformada de coseno discreta inversa

Descripción

ejemplo

x = idct(y) devuelve la transformada de coseno discreta inversa del arreglo de entrada y. La salida x es del mismo tamaño que y. Si y tiene más de una dimensión, idct actúa a lo largo de la primera dimensión del arreglo con un tamaño mayor que 1.

x = idct(y,n) rellena de ceros o trunca la dimensión relevante de y a la longitud n antes de la transformación.

x = idct(y,n,dim) calcula la transformada a lo largo de la dimensión dim. Para introducir una dimensión y utilizar el valor predeterminado de n, defina el segundo argumento como vacío, [].

ejemplo

y = idct(___,'Type',dcttype) especifica el tipo de transformada de coseno discreta inversa que calcular. Para obtener más detalles, consulte Transformada de coseno discreta inversa. Esta opción puede combinarse con cualquiera de las sintaxis anteriores.

Ejemplos

contraer todo

Genere una señal compuesta por una sinusoide de 25 Hz muestreada a 1000 Hz durante 1 segundo. La sinusoide está integrada en ruido blanco gaussiano con varianza 0,01.

rng('default')

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

Calcule la transformada de coseno discreta de la secuencia. Determine cuántos de los 1000 coeficientes de la DCT son significativos. Elija 1 como umbral de relevancia.

y = dct(x);

sigcoeff = abs(y) >= 1;

howmany = sum(sigcoeff)
howmany = 17

Reconstruya la señal únicamente con los componentes significativos.

y(~sigcoeff) = 0;

z = idct(y);

Represente la señal original y la señal reconstruida.

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.

Verifique que las diferentes variantes de la transformada de coseno discreta sean ortogonales mediante una señal aleatoria como referencia.

Comience por generar la señal.

s = randn(1000,1);

Verifique que la DCT-1 y la DCT-4 sean sus propias inversas.

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

Verifique que la DCT-2 y la DCT-3 sean inversas entre sí.

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

Argumentos de entrada

contraer todo

Transformada de coseno discreta de entrada, especificada como vector de valor real o valor complejo, matriz o arreglo N-D.

Ejemplo: dct(sin(2*pi*(0:255)/4)) especifica la transformada de coseno discreta de una sinusoide.

Ejemplo: dct(sin(2*pi*[0.1;0.3]*(0:39))') especifica la transformada de coseno discreta de una sinusoide de dos canales.

Tipos de datos: single | double
Soporte de números complejos:

Longitud de la transformada inversa, especificada como escalar entero positivo.

Tipos de datos: single | double

Dimensión sobre la que se desea operar, especificada como escalar entero positivo.

Tipos de datos: single | double

Tipo de transformada de coseno discreta inversa, especificado como escalar entero positivo de 1 a 4.

Tipos de datos: single | double

Argumentos de salida

contraer todo

Transformada de coseno discreta inversa, especificada como vector de valor real o valor complejo, matriz o arreglo N-D.

Más acerca de

contraer todo

Transformada de coseno discreta inversa

La transformada de coseno discreta inversa reconstruye una secuencia a partir de sus coeficientes de transformada de coseno discreta (DCT). La función idct es la inversa de la función dct.

La DCT tiene cuatro variantes estándar. En una señal y de longitud N y con δkℓ (la delta de Kronecker), las inversas se definen mediante:

  • Inversa de la DCT-1:

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

  • Inversa de la DCT-2:

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

  • Inversa de la DCT-3:

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

  • Inversa de la DCT-4:

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

Las series se indexan desde n = 1 y k = 1 en lugar de n = 0 y k = 0, como es habitual, porque los vectores de MATLAB® van desde 1 hasta N en lugar de desde 0 hasta N – 1.

Todas las variantes de la DCT son unitarias (o, de forma equivalente, ortogonales): Para encontrar las transformadas hacia delante, intercambie k y n en cada definición. DCT-1 y DCT-4 son sus propias inversas. DCT-2 y DCT-3 son inversas entre sí.

Referencias

[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.

Capacidades ampliadas

Historial de versiones

Introducido antes de R2006a

Consulte también

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