idct

Обратное дискретное косинусное преобразование

Описание

пример

x = idct(y) возвращает обратное дискретное косинусное преобразование входного массива y. Выход x имеет тот же размер как y. Если y имеет больше чем одну размерность, затем idct действует вдоль первого измерения массива с размером, больше, чем 1.

x = idct(y,n) нулевые клавиатуры или обрезают соответствующую размерность y к длине n перед преобразованием.

x = idct(y,n,dim) вычисляет преобразование по измерению dim. Вводить размерность и использовать значение по умолчанию n, задайте второй аргумент как пустой, [].

пример

y = idct(___,'Type',dcttype) задает тип обратного дискретного косинусного преобразования, чтобы вычислить. Смотрите Обратное Дискретное косинусное преобразование для деталей. Эта опция может быть объединена с любым из предыдущих синтаксисов.

Примеры

свернуть все

Сгенерируйте сигнал, который состоит из синусоиды на 25 Гц, произведенной на уровне 1 000 Гц в течение 1 секунды. Синусоида встраивается в белый Гауссов шум с отклонением 0.01.

rng('default')

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

Вычислите дискретное косинусное преобразование последовательности. Определите, сколько из коэффициентов DCT 10:00 является значительным. Выберите 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-D или gpuArray объект.

Смотрите функции MATLAB Запуска на графическом процессоре (Parallel Computing Toolbox) и Поддержка графического процессора Релизом (Parallel Computing Toolbox) для получения дополнительной информации о gpuArray объекты.

Пример: dct(sin(2*pi*(0:255)/4)) задает дискретное косинусное преобразование синусоиды.

Пример: dct(sin(2*pi*[0.1;0.3]*(0:39))') задает дискретное косинусное преобразование двухканальной синусоиды.

Типы данных: single | double
Поддержка комплексного числа: Да

Обратная длина преобразования, заданная как положительный целочисленный скаляр.

Типы данных: single | double

Величина для работы, заданная как положительный целый скаляр.

Типы данных: single | double

Обратный тип дискретного косинусного преобразования, заданный как положительный целочисленный скаляр от 1 до 4.

Типы данных: single | double

Выходные аргументы

свернуть все

Обратное дискретное косинусное преобразование, возвращенное как или комплексный вектор с действительным знаком, матрица, массив N-D или gpuArray объект.

Больше о

свернуть все

Обратное дискретное косинусное преобразование

Обратное дискретное косинусное преобразование восстанавливает последовательность от своих коэффициентов дискретного косинусного преобразования (DCT). idct функция является инверсией dct функция.

DCT имеет четыре стандартных варианта. Для преобразованного y сигнала длины N, и с δkℓ Кронекерова дельта, инверсии заданы:

  • Инверсия DCT-1:

    x(n)=2N1k=1Ny(k)11+δk1+δkN11+δn1+δnNпотому что(πN1(k1)(n1))

  • Инверсия DCT-2:

    x(n)=2Nk=1Ny(k)11+δk1потому что(π2N(k1)(2n1))

  • Инверсия DCT-3:

    x(n)=2Nk=1Ny(k)11+δn1потому что(π2N(2k1)(n1))

  • Инверсия DCT-4:

    x(n)=2Nk=1Ny(k)потому что(π4N(2k1)(2n1))

Ряды индексируются от n = 1 и k = 1 вместо обычного n = 0 и k = 0, потому что векторы MATLAB®, запущенные от 1 до N вместо от 0 до N – 1.

Все варианты DCT являются унитарными (или, эквивалентно, ортогональными): найти прямые преобразования, переключатель k и n в каждом определении. В частности, DCT-1 и DCT-4 являются их собственными инверсиями, и DCT-2 и DCT-3 являются инверсиями друг друга.

Ссылки

[1] Джайн, А. К. Основные принципы цифровой обработки изображений. Englewood Cliffs, NJ: Prentice Hall, 1989.

[2] Pennebaker, W. B. и Дж. Л. Митчелл. Стандарт сжатия данных неподвижного изображения JPEG. Нью-Йорк: Ван Нострэнд Райнхольд, 1993.

[3] Оппенхейм, Алан V, Рональд В. Шафер и Джон Р. Бак. Обработка сигналов дискретного времени. 2-й Эд. Верхний Сэддл-Ривер, NJ: Prentice Hall, 1999.

Расширенные возможности

Представлено до R2006a