Дискретное косинусное преобразование (DCT) тесно связано с дискретным преобразованием Фурье (DFT). ДПФ является на самом деле одним шагом в расчете DCT для последовательности. DCT, однако, имеет лучшее энергетическое уплотнение, чем ДПФ со всего несколькими коэффициентов преобразования, представляющих большинство энергии в последовательности. Это свойство DCT делает его полезным в приложениях, таких как передача данных и кодирование сигнала.
DCT имеет четыре стандартных варианта. Для сигнала x длины N, и с Кронекерова дельта, преобразования заданы:
DCT-1:
DCT-2:
DCT-3:
DCT-4:
Функция Signal Processing Toolbox dct
вычисляет унитарный DCT входного массива.
Все варианты DCT являются унитарными (или, эквивалентно, ортогональными): найти их инверсии, переключатель k и n в каждом определении. DCT-1 и DCT-4 являются их собственными инверсиями. DCT-2 и DCT-3 являются инверсиями друг друга:
Инверсия DCT-1:
Инверсия DCT-2:
Инверсия DCT-3:
Инверсия DCT-4:
Функциональный idct
вычисляет обратный DCT для входной последовательности, восстанавливая сигнал от полного или частичного набора коэффициентов DCT.
Из-за энергетического свойства уплотнения DCT можно восстановить сигнал только от части его коэффициентов DCT. Например, сгенерируйте синусоидальную последовательность на 25 Гц, произведенную на уровне 1 000 Гц.
t = 0:1/1000:1; x = sin(2*pi*25*t);
Вычислите DCT этой последовательности и восстановите сигнал с помощью только те компоненты со значением, больше, чем 0,1. Определите, сколько коэффициентов из оригинала 1000 удовлетворяет требованию.
y = dct(x); y2 = find(abs(y) < 0.1); y(y2) = zeros(size(y2)); z = idct(y); howmany = length(find(y))
howmany = 64
Постройте исходные и восстановленные последовательности.
subplot(2,1,1) plot(t,x) ax = axis; title('Original Signal') subplot(2,1,2) plot(t,z) axis(ax) title('Reconstructed Signal')
Одной мерой точности реконструкции является норма различия между исходными и восстановленными сигналами, разделенными на норму исходного сигнала. Вычислите эту оценку и опишите ее как процент.
norm(x-z)/norm(x)*100
ans = 1.9437
Восстановленный сигнал сохраняет приблизительно 98% энергии в исходном сигнале.