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

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

Варианты DCT

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

  • DCT-1:

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

  • DCT-2:

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

  • DCT-3:

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

  • DCT-4:

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

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

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

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

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

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

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

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

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

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

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

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

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

Реконструкция сигнала с использованием 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% энергии в исходном сигнале.

См. также

|

Похожие темы