MATLAB信号处理——信号的变换(8)

2.8离散余弦变换

       离散余弦变换(DCT )是与傅里叶变换相关的一种变换,它类似于离散傅里叶变换(DFT f),但是只使用实数。离散余弦变换相当于一个长度大概是它两倍的离散傅里叶变换,这个离散傅里叶变换是对一个实偶函数进行的(因为一个实偶函数的傅里叶变换仍然是一个实偶函数),在有些变形里面需要将输入或者输出的位置移动半个单位(DCT有8种标准类型,其中4种是常见的)。

令f(x)为一维离散函数,x = 0,1,2,···N-1,进行离散变换后,有F(u)=\sqrt{\frac{2}{N}}\sum_{x=0}^{N-1}f(x)cos[\frac{\pi}{2N}(2x+1)u]F(0)=\frac{1}{\sqrt{N}}\sum_{x=0}^{N-1}f(x)

其反变换为

f(x)=\frac{1}{\sqrt{N}}F(0)+\sqrt{\frac{2}{N}}\sum_{u=1}^{N-1}F(u)cos[\frac{\pi}{2N}(2x+1)u],其中g(x,0)=\frac{1}{\sqrt{N}}g(x,u)=\sqrt{\frac{2}{N}}cos\frac{(2x+1)u\pi}{2N},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信号处理》沈再阳

                        百度百科

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值