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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

' I3 @; |  c) I. k2 w7 v, \# Tdct; \5 A% `/ U( b
Discrete cosine transform! k# ?$ @+ _7 v2 g

9 b* b& t. p, }& y6 M8 T# r; ISyntax& I3 g/ `9 E# Q3 n- t1 @
0 q2 b' G3 M9 c3 O
y = dct(x)
9 d1 M- Q& \3 r7 F! h  _. J0 z$ Q& Q9 {* b0 ~
y = dct(x,n)# H. A6 l2 M2 ^/ {+ M
4 P5 q9 |) r3 k3 L/ n0 o7 L+ R
y = dct(x,n,dim)
/ X2 q" _& H4 i+ Z  h1 h
# `7 X" F4 d# o% P$ p  X3 D8 N% |y = dct(___,'Type',dcttype)
$ d, k8 S7 E. U; _5 m' `8 d8 }
$ U8 x" T6 ?7 k+ @9 iDescription1 J: z$ D6 ?! m- M4 O9 M% i
  K4 @1 t. N' w8 ?/ m- n: e
y = dct(x)返回输入数组x的酉离散余弦变换。 输出y的大小与x相同。 如果x具有多个维度,则dct沿第一个数组维度运行,其大小大于1。) u% H- \# ^& a0 T

& D& ^- L8 x& N2 }0 my = dct(x,n)在转换之前将x的相关维度填充或截断为长度n。
7 n+ ]! V. b3 W0 |" V* J9 U1 y* c
y = dct(x,n,dim)计算沿维度dim的变换。 要输入维度并使用默认值n,请将第二个参数指定为空,[]。
7 d( f" g% i  q) A0 n. s' ?, K+ A
y = dct(___,'Type',dcttype)指定要计算的离散余弦变换的类型。 有关详细信息,请参见离散余弦变换。 此选项可以与任何以前的语法结合使用。
7 {  q1 r& b4 [5 w3 `; _( y# u
3 u, z+ Z5 S0 o' x3 {! E' hDiscrete Cosine Transform6 x: v0 q! M& e' S. ?8 ~

8 d5 B, r/ V% K# S% u* D2 }( H离散余弦变换(DCT)与离散傅立叶变换密切相关。 您通常可以从几个DCT系数非常精确地重建序列。 此属性对需要数据减少的应用程序很有用。
/ c+ o3 J! a1 m5 X( g. p8 J6 f( d3 @; M* w# `- K+ A6 Q/ k: c. g0 i! I7 D
DCT有四种标准型号。 对于长度为N的信号x,以及具有δkℓ的Kronecker delta,变换由下式定义:; d! c' Y* @1 t- }
8 J& Y0 ^5 }6 C" v
" P% Y/ t* e/ n; `/ S9 p

' H6 h, o7 C  {- }7 m8 y该系列从n = 1和k = 1索引,而不是通常的n = 0和k = 0,因为MATLAB®向量从1到N而不是从0到N - 1。: u( Y5 D$ W) ~

% G9 E8 j& R0 k* N, g6 C" j4 Y7 A# m! @DCT的所有变体都是单一的(或等效地,正交):要找到它们的反转,在每个定义中切换k和n。 特别地,DCT-1和DCT-4是它们自己的逆,并且DCT-2和DCT-3是彼此相反的。
; w1 A3 o2 l& ]" a; I( w& s3 _) _7 d$ t4 s2 x/ C1 D! Z
Energy Stored in DCT Coefficients$ D. N$ E# w; N" P% u$ K; n# L1 ~/ v/ O
- ?4 b4 f" v0 m, B
找出有多少DCT系数代表序列中99%的能量。- g& |+ p- p$ h  I" ^3 D
$ L* F) |+ }  L. x: J
  • 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')
    1 \8 f2 E1 {; K7 j  P* M
   
3 c$ w+ \' T! z, A得到:
8 ?/ P4 z, \: e% U2 T) j
5 {& n% T5 g$ N4 d3 y9 M  b! R. b! j; |, H

+ x( k3 K0 O% t8 _* j: z
+ n" i" }3 l- ^
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-5 00:35 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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