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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
5 h# I6 c, W' o* C) V
dct
$ |4 H) t& a/ a+ A' R3 p( D* a% }Discrete cosine transform$ T4 \" u. X/ @1 ^" U/ q+ {  U( ^
) `- j' K0 k9 a
Syntax2 d4 ]: b' j4 ?
9 j. t! @) F( @9 U, `0 |& h
y = dct(x)
4 g& L8 \) `2 k$ A7 K
2 }0 X, z; `7 hy = dct(x,n)5 W* a: P! t* n% w
$ D! S, N. X! Y; }, `$ n( v
y = dct(x,n,dim), u" L+ f1 y7 A4 S2 p  J

9 A' X1 F% F, v- ~- ?4 iy = dct(___,'Type',dcttype)
: y0 N, B0 B4 f  j# E1 C9 ]
! M4 j2 T7 K- _% DDescription8 S1 ^6 z# R, C. o# h

9 d  K. a1 X$ f1 E/ g; U& D! h( `, }y = dct(x)返回输入数组x的酉离散余弦变换。 输出y的大小与x相同。 如果x具有多个维度,则dct沿第一个数组维度运行,其大小大于1。
- @4 j8 s1 f% e# x5 k
" w0 o3 k9 N' T7 ?y = dct(x,n)在转换之前将x的相关维度填充或截断为长度n。/ e; r1 a; T! l. N' L
, a3 A$ E8 z3 X3 r) Y9 F1 i3 p
y = dct(x,n,dim)计算沿维度dim的变换。 要输入维度并使用默认值n,请将第二个参数指定为空,[]。
7 w2 h9 b- _' J) V9 M# R% Y% ]5 }, p% \7 v3 s
y = dct(___,'Type',dcttype)指定要计算的离散余弦变换的类型。 有关详细信息,请参见离散余弦变换。 此选项可以与任何以前的语法结合使用。8 p) k5 ?1 ~6 K& ]
1 |  ~' W1 ^2 z9 E% `
Discrete Cosine Transform1 Q  K1 \( g/ [5 |5 u

, _5 M' J3 \# c- v) j离散余弦变换(DCT)与离散傅立叶变换密切相关。 您通常可以从几个DCT系数非常精确地重建序列。 此属性对需要数据减少的应用程序很有用。
  i- ?9 R  B6 h. w3 [6 {) y* P" t
% Q7 g7 q/ s- F, g; m. d& H' C5 PDCT有四种标准型号。 对于长度为N的信号x,以及具有δkℓ的Kronecker delta,变换由下式定义:9 Q+ H' H. u$ K4 y+ I4 E

2 r8 l5 j9 E$ {& \) o* N : n7 Y1 _8 n0 B9 A

- I* Z7 G4 l# r/ r* N. z该系列从n = 1和k = 1索引,而不是通常的n = 0和k = 0,因为MATLAB®向量从1到N而不是从0到N - 1。
8 p8 [% i; ~( g' Q; Z" L/ v! B# b: @1 L6 g
DCT的所有变体都是单一的(或等效地,正交):要找到它们的反转,在每个定义中切换k和n。 特别地,DCT-1和DCT-4是它们自己的逆,并且DCT-2和DCT-3是彼此相反的。1 {! e) {5 j0 @+ n! S% \+ i1 X8 |0 P

, o% V. o. |& _- CEnergy Stored in DCT Coefficients
3 A6 A4 E1 y* G5 P  c' g1 O- n4 L
找出有多少DCT系数代表序列中99%的能量。
$ a. S2 ?7 v) g  y  V
& l  G2 Q) F, L; q
  • 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')
      A. X. L3 i. }
   " @6 d; o, w' @5 w% ^& f
得到:
( K; u, i0 @4 G: q0 f' P! {9 V* K
5 D3 ^/ w8 ]" |! r0 l& `3 q2 U
7 m4 n4 _" Z" Q, i  C) c" D( N% T; `8 E4 H9 s% m
: B+ e" _! L* V- p
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-23 22:46 , Processed in 0.156250 second(s), 27 queries , Gzip On.

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

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

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