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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
; a$ `( }* j" G* y% I4 K- F9 Q
dct4 N- U) n/ ~6 J4 I. `3 `. ?/ q
Discrete cosine transform* E& a! B9 y5 R8 ~* s; c# z

: u' F$ ~# Z) S, ?Syntax
0 s, q% f7 E7 g
) X9 X" G' \1 t) Py = dct(x)0 K, e, q" W# ~: H$ p# a+ B( ~
3 b1 I; K' a: i& h
y = dct(x,n)
1 i3 R2 p" q$ A+ {) r
* i+ p- W3 V1 a" U- _: Ay = dct(x,n,dim)
0 h: A  v1 ~( y, Q* Y$ H# E7 R9 A8 \" k" i& k/ d
y = dct(___,'Type',dcttype)/ n/ a3 I4 P5 \
# r- x- p' v' a3 O9 h! g' u4 C
Description
$ q( b% [+ d) v) {" \! Y: \  v4 q1 X; P. P& q# ?* `# c
y = dct(x)返回输入数组x的酉离散余弦变换。 输出y的大小与x相同。 如果x具有多个维度,则dct沿第一个数组维度运行,其大小大于1。2 f  m# R' V  n7 B  O6 q

8 C& L+ |4 X! Uy = dct(x,n)在转换之前将x的相关维度填充或截断为长度n。
; e+ m3 M6 P9 T' ~4 D. U, u! x/ d) _
y = dct(x,n,dim)计算沿维度dim的变换。 要输入维度并使用默认值n,请将第二个参数指定为空,[]。+ I8 G9 }+ _( B& Y, K

6 Q1 i  W; b( ?. q' `y = dct(___,'Type',dcttype)指定要计算的离散余弦变换的类型。 有关详细信息,请参见离散余弦变换。 此选项可以与任何以前的语法结合使用。  ^) k2 ~$ J; @7 B1 E4 y2 c

# o) f- p6 d: m! v7 N8 e' N- ^Discrete Cosine Transform7 `7 v# D8 @+ T3 P: h1 r, ~
* q" p& h0 W! t6 {2 U
离散余弦变换(DCT)与离散傅立叶变换密切相关。 您通常可以从几个DCT系数非常精确地重建序列。 此属性对需要数据减少的应用程序很有用。! z# c) |! A" W% H

: W5 C; c; R6 ~, oDCT有四种标准型号。 对于长度为N的信号x,以及具有δkℓ的Kronecker delta,变换由下式定义:
3 X8 _3 H7 p# [- v8 w6 ~* b* H) D" ~2 k4 c9 l' g% r

1 @0 X) m. U- q( W# a
" ?5 }6 R2 |6 F/ N5 z7 k5 [2 u4 w该系列从n = 1和k = 1索引,而不是通常的n = 0和k = 0,因为MATLAB®向量从1到N而不是从0到N - 1。
  H! ], w. ]2 E2 ?& I: o7 h& I" N
DCT的所有变体都是单一的(或等效地,正交):要找到它们的反转,在每个定义中切换k和n。 特别地,DCT-1和DCT-4是它们自己的逆,并且DCT-2和DCT-3是彼此相反的。
. {5 h/ v4 N" \0 G! n9 [- a
; L7 S" B; T( jEnergy Stored in DCT Coefficients
* L  l' h# a/ v$ l8 G6 ^6 f( e3 U
) y" W& V  d  U$ `+ u4 u9 W' X7 b找出有多少DCT系数代表序列中99%的能量。
5 S1 W  z+ J, U  ]5 s3 P- q4 m' P- ]& A8 h  @
  • 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')/ N0 r. w  J- J4 }" V
   
. p' Q, j; h) x, @% K7 G得到:0 \$ g+ y$ {. `; t
0 s3 I1 H+ j4 N6 b

! a$ Y# l) j5 n& w
/ e2 h* r# }$ _* V
8 s4 ~4 X( b+ n5 k/ a" T) Z. s
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-19 08:28 , Processed in 0.109375 second(s), 26 queries , Gzip On.

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

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

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