Дискретное косинусное преобразование (DCT) тесно связано с дискретным преобразованием Фурье (DFT). DFT фактически является одним шагом в вычислении DCT для последовательности. Однако DCT имеет лучшее уплотнение энергии, чем DFT, причем только несколько коэффициентов преобразования представляют большую часть энергии в последовательности. Это свойство DCT делает его полезным в таких приложениях, как передача данных и кодирование сигнала.
DCT имеет четыре стандартных варианта. Для сигнала x длиной N и с дельты Кронекера преобразования определяются следующим образом:
DCT-1:
πN-1 (n-1) (k-1))
DCT-2:
2n-1) (k-1))
DCT-3:
) (2k-1))
DCT-4:
(2k-1))
Функция панели инструментов обработки сигналов dct вычисляет унитарный DCT входного массива.
Все варианты DCT унитарны (или, что эквивалентно, ортогональны): Чтобы найти их обратные, переключите k и n в каждом определении. DCT-1 и DCT-4 - это свои инверсии. DCT-2 и DCT-3 являются обратными друг другу:
Обратная DCT-1:
πN-1 (k-1) (n-1))
Обратная DCT-2:
) (2n-1))
Обратная DCT-3:
2k-1) (n-1))
Обратная DCT-4:
(2n-1))
Функция idct вычисляет обратное ДКП для входной последовательности, восстанавливая сигнал из полного или частичного набора коэффициентов ДКП.
Из-за свойства уплотнения энергии DCT можно восстановить сигнал только из доли его DCT коэффициентов. Например, генерируют синусоидальную последовательность с частотой 25 Гц, дискретизированную при частоте 1000 Гц.
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% энергии в исходном сигнале.