exponenta event banner

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

Дискретное косинусное преобразование (DCT) тесно связано с дискретным преобразованием Фурье (DFT). DFT фактически является одним шагом в вычислении DCT для последовательности. Однако DCT имеет лучшее уплотнение энергии, чем DFT, причем только несколько коэффициентов преобразования представляют большую часть энергии в последовательности. Это свойство DCT делает его полезным в таких приложениях, как передача данных и кодирование сигнала.

Варианты DCT

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

  • DCT-1:

y (k) =2N-1∑n=1Nx (n) 11 + δn1 + δnN11 + δk1 + δkNcos (πN-1 (n-1) (k-1))

  • DCT-2:

y (k) =2N∑n=1Nx (n) 11 + δk1cos (π2N (2n-1) (k-1))

  • DCT-3:

y (k) =2N∑n=1Nx (n) 11 + δn1cos (π2N (n-1) (2k-1))

  • DCT-4:

y (k) =2N∑n=1Nx (n) cos (π4N (2n-1) (2k-1))

Функция панели инструментов обработки сигналов dct вычисляет унитарный DCT входного массива.

Варианты обратного DCT

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

  • Обратная DCT-1:

x (n) =2N-1∑k=1Ny (k) 11 + δk1 + δkN11 + δn1 + δnNcos (πN-1 (k-1) (n-1))

  • Обратная DCT-2:

x (n) =2N∑k=1Ny (k) 11 + δk1cos (π2N (k-1) (2n-1))

  • Обратная DCT-3:

x (n) =2N∑k=1Ny (k) 11 + δn1cos (π2N (2k-1) (n-1))

  • Обратная DCT-4:

x (n) =2N∑k=1Ny (k) cos (π4N (2k-1) (2n-1))

Функция idct вычисляет обратное ДКП для входной последовательности, восстанавливая сигнал из полного или частичного набора коэффициентов ДКП.

Восстановление сигнала с использованием DCT

Из-за свойства уплотнения энергии 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')

Figure contains 2 axes. Axes 1 with title Original Signal contains an object of type line. Axes 2 with title Reconstructed Signal contains an object of type line.

Одной из мер точности реконструкции является норма разности между исходным и реконструированным сигналами, деленная на норму исходного сигнала. Вычислите эту оценку и выразите ее в процентах.

norm(x-z)/norm(x)*100
ans = 1.9437

Восстановленный сигнал сохраняет приблизительно 98% энергии в исходном сигнале.

См. также

|

Связанные темы