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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

7 k/ c; |3 ^& K& |. f6 Rdct  X# q2 w  Q7 f1 D7 p# P/ l% m! r8 l
Discrete cosine transform
6 B( z$ f+ Y) \2 v& C" n
; A4 M6 Q! S" P& f$ b+ T/ `( kSyntax
. K3 M9 o& |& K! F5 l1 p  T8 y: x; u# v+ P( `; J* [, l1 j
y = dct(x)' p# `5 u* l8 T0 d% W
/ w1 Q; @& }- z+ S+ l0 X7 x
y = dct(x,n)
. n! ^) p$ C2 b' A6 P% \9 |# _
: o1 `2 Q6 V' {5 }. p5 E* u/ i1 hy = dct(x,n,dim)4 m6 v7 a7 @* E9 q) ~

6 h+ K# o: C  j# _y = dct(___,'Type',dcttype)
; Z: a7 H8 x& j* Z; Y2 }& P# B% r6 ^
Description. q$ D4 H+ U" e5 M

6 x/ Y5 g/ H" R: t5 R  fy = dct(x)返回输入数组x的酉离散余弦变换。 输出y的大小与x相同。 如果x具有多个维度,则dct沿第一个数组维度运行,其大小大于1。
9 p! G% q9 E! @) u' W
* C( S7 |5 H6 j$ ?  n* O3 xy = dct(x,n)在转换之前将x的相关维度填充或截断为长度n。2 U' F/ J( B) c' O& _
. Y) |/ ]6 l) E1 s$ i
y = dct(x,n,dim)计算沿维度dim的变换。 要输入维度并使用默认值n,请将第二个参数指定为空,[]。
' Z- Y5 q& P& h4 I# E; }" ^* V8 S* v$ D! I: Q7 k' ~" ~
y = dct(___,'Type',dcttype)指定要计算的离散余弦变换的类型。 有关详细信息,请参见离散余弦变换。 此选项可以与任何以前的语法结合使用。
/ C6 t# R5 }) |( n3 X  Q$ @7 x7 Y- G) T% t1 t$ g
Discrete Cosine Transform3 i5 d& L. C# y) V% Z
6 L% ?& p& J/ F6 K8 v0 B( k7 t
离散余弦变换(DCT)与离散傅立叶变换密切相关。 您通常可以从几个DCT系数非常精确地重建序列。 此属性对需要数据减少的应用程序很有用。) _. ]$ k9 m1 B# i& {8 v

, u  E2 k/ C# }+ B, x+ ~6 ADCT有四种标准型号。 对于长度为N的信号x,以及具有δkℓ的Kronecker delta,变换由下式定义:
; E+ e) X' x: S9 }% c: K0 ?* L1 a9 A; G' j7 x
; n. K+ {2 u/ ^+ |  ?( M( a- ?
# g% }2 ^- s) P* Z
该系列从n = 1和k = 1索引,而不是通常的n = 0和k = 0,因为MATLAB®向量从1到N而不是从0到N - 1。) p- ?* I  s$ u" Q& ]- D" M1 X
. Z! b" ]! r! h4 F* k7 S
DCT的所有变体都是单一的(或等效地,正交):要找到它们的反转,在每个定义中切换k和n。 特别地,DCT-1和DCT-4是它们自己的逆,并且DCT-2和DCT-3是彼此相反的。
  O. V' X' l6 r% s8 W' J9 o" N
" ]& I6 R* E& |, U7 G4 GEnergy Stored in DCT Coefficients
# R6 S* z. G; @+ Z$ S5 a6 l
% [" F" F' M% @& C% @7 e1 t& x- P找出有多少DCT系数代表序列中99%的能量。
3 A- D) |6 g5 Q, [- z3 `
& j8 L, l' T% c* F5 y+ O
  • 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')0 M4 r- ~0 a) e, P5 ?
   
. {5 }9 n# J4 K; ^: S* D" [3 \/ R得到:. L7 t- j: ~( j4 z% R
1 B8 _4 d0 ^9 e/ }

  e2 P! i6 [: G  b% H  L6 K
  X4 _5 K4 y/ L+ c8 }# Z
9 k9 C( ~% ]9 m+ z0 G$ E, |% `
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-23 23:09 , Processed in 0.171875 second(s), 26 queries , Gzip On.

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

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

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