2.8离散余弦变换
离散余弦变换(DCT )是与傅里叶变换相关的一种变换,它类似于离散傅里叶变换(DFT f),但是只使用实数。离散余弦变换相当于一个长度大概是它两倍的离散傅里叶变换,这个离散傅里叶变换是对一个实偶函数进行的(因为一个实偶函数的傅里叶变换仍然是一个实偶函数),在有些变形里面需要将输入或者输出的位置移动半个单位(DCT有8种标准类型,其中4种是常见的)。
令f(x)为一维离散函数,x = 0,1,2,···N-1,进行离散变换后,有,
,
其反变换为
,其中
,
,2维离散余弦变换就是在一维离散余弦变换的基础上增加了一维,没有什么太大变化。
MATLAB提供了DCT的函数dct,使用方法为y=dct(x),dict2函数为DCT的反变换函数,使用方法为B=idct2(A)
例1 DCT
clear all
n = 1:100;
x = 5*sin(2*pi*n/10)+15*cos(2*pi*n/25);
y = dct(x);
subplot(121)
plot(x)
title('原始信号')
subplot(122)
plot(y)
title('DCT')
例2 DICT
clear all;
n = 0:200-1;
f = 200;
fs = 3000;
x = cos(2*pi*n*f/fs);
y = dct(x);
m = find(abs(y<5));
y(m) = zeros(size(m));
z = idct(y);
subplot(131)
plot(n,x);
title('原始信号')
subplot(132)
plot(n,y);
title('DCT')
subplot(133)
plot(n,z);
title('阈值处理过的信号')
参考资料——《MATLAB信号处理》沈再阳
百度百科