找回密码
 注册
关于网站域名变更的通知
查看: 456|回复: 1
打印 上一主题 下一主题

了解一下MATLAB信号处理工具箱之 dct 介绍及案例分析

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-12-20 10:23 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

6 H3 N0 c4 q' c2 Z2 R" adct8 O2 [3 Y+ m9 G9 n& O. A6 A
Discrete cosine transform
0 ^  b% Q  _- w
3 f$ Q" G! t$ }* y" }Syntax
8 F8 p" N- I9 w7 q9 y+ n$ Z
8 w1 p+ c# J$ @9 D% H5 Ly = dct(x)
3 z, u% e: T2 I5 @# |2 k9 n3 |. B, X+ ~' U4 ~7 i1 S
y = dct(x,n)! H$ T# \0 ^+ Y/ r0 Y# o8 q
; u5 N  U3 ?) z4 S. u
y = dct(x,n,dim)
/ s  O6 P+ N6 I' |- Q) u9 I) L6 b1 ^/ \$ @3 ^
y = dct(___,'Type',dcttype)
8 ]8 }! ]$ t- L3 y: r! Y, ]2 C" Y1 y3 e4 ^8 f* w
Description
: P# J, Z* ]- M& w7 e- g5 g* x" m" H( O/ V7 x
y = dct(x)返回输入数组x的酉离散余弦变换。 输出y的大小与x相同。 如果x具有多个维度,则dct沿第一个数组维度运行,其大小大于1。+ ?% M7 `7 i$ N% V5 {1 @
3 W% z, O/ Y" N# u$ n' z9 Y2 L
y = dct(x,n)在转换之前将x的相关维度填充或截断为长度n。
+ X! {4 t. m" x! e" i* U; Q; f4 b2 B# P6 g
y = dct(x,n,dim)计算沿维度dim的变换。 要输入维度并使用默认值n,请将第二个参数指定为空,[]。
+ l( H7 f) i0 y+ }$ @/ s
% v# d- \2 E! ^( [, W4 Wy = dct(___,'Type',dcttype)指定要计算的离散余弦变换的类型。 有关详细信息,请参见离散余弦变换。 此选项可以与任何以前的语法结合使用。
& I6 V& {! K4 P4 f* d4 d5 s
$ A# z. `6 _1 {2 g  LDiscrete Cosine Transform
! @. }, b0 P6 \  m' y& |
9 F5 \: t# K, p6 N离散余弦变换(DCT)与离散傅立叶变换密切相关。 您通常可以从几个DCT系数非常精确地重建序列。 此属性对需要数据减少的应用程序很有用。
0 E8 e- `' d6 m- X
# T8 u* u7 v+ c) K" fDCT有四种标准型号。 对于长度为N的信号x,以及具有δkℓ的Kronecker delta,变换由下式定义:- o7 G6 [6 W5 N
* j% s) r5 ^# `: `$ L4 X- a. B
& Y/ @/ Q, ^2 O
' P, Z- O* N" q: e2 u0 k1 a
该系列从n = 1和k = 1索引,而不是通常的n = 0和k = 0,因为MATLAB®向量从1到N而不是从0到N - 1。% }2 c& J- o' }# S6 |: g

) m- `' p$ L: [) xDCT的所有变体都是单一的(或等效地,正交):要找到它们的反转,在每个定义中切换k和n。 特别地,DCT-1和DCT-4是它们自己的逆,并且DCT-2和DCT-3是彼此相反的。
- x* m* P7 z0 M! ^8 E4 D( \$ p. v: J/ o# n$ U# J+ W0 ~6 c
Energy Stored in DCT Coefficients2 G% u5 [$ k- G" ?

' R; W" ~9 V( L5 M( z找出有多少DCT系数代表序列中99%的能量。' J! k8 f" q* @5 f9 p5 I
+ g$ a& A/ B9 a/ j' P# b: \
  • clc
  • clear
  • close all
  • % Find how many DCT coefficients represent 99% of the energy in a sequence.
  • x = (1:100) + 50*cos((1:100)*2*pi/40);
  • X = dct(x);
  • [XX,ind] = sort(abs(X),'descend');
  • i = 1;
  • while norm(X(ind(1:i)))/norm(X) < 0.99
  •    i = i + 1;
  • end
  • needed = i;
  • % Reconstruct the signal and compare it to the original signal.
  • X(ind(needed+1:end)) = 0;
  • xx = idct(X);
  • plot([x;xx]')
  • legend('Original',['Reconstructed, N = ' int2str(needed)], ...
  •        'Location','SouthEast')$ h! Z. S( \1 _/ F; |5 N
   
% c& K& N9 \6 n2 g* z得到:% k, L0 |& v8 v5 h7 h$ ?$ o

4 O2 M# {* Q/ I, e7 |2 N1 t
- E- s( n" I; B7 X" C! K7 n0 G4 i9 S0 p' t# o5 T4 L# y. T* `# L6 d

1 s& v$ a3 u6 n
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-31 19:05 , Processed in 0.156250 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表