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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
/ o2 v" v; O" H
dct7 |$ o+ e- V- b- @
Discrete cosine transform
) L% }) C0 ~1 T2 r
+ H* p- S/ ^6 M5 L* ASyntax
+ n, y5 T8 A' @7 t& \* p; H! S# L7 o$ O; G3 g
y = dct(x)
2 ~; s  m8 H$ O! [/ N( {# [8 L3 q2 b
y = dct(x,n)
8 j' o8 v  D7 r# K
! H9 h7 g& ^8 o2 A. Oy = dct(x,n,dim)1 N( M  _8 N2 r" p3 ?( u5 D
4 K% D) t6 a7 N
y = dct(___,'Type',dcttype)& K& Z! M. o$ K- e! Q& i, A

' p+ V2 J" }9 q% i, R0 H8 yDescription
3 l) w4 u8 v* A) }6 r. G9 g* \3 f% Q* n
- E2 c, J) `1 S1 I5 d3 F; ~) My = dct(x)返回输入数组x的酉离散余弦变换。 输出y的大小与x相同。 如果x具有多个维度,则dct沿第一个数组维度运行,其大小大于1。  A$ L6 i! X. ~# W- Y, Q

+ t0 S# T% b7 r) Py = dct(x,n)在转换之前将x的相关维度填充或截断为长度n。
8 G. ?& m% N% g; `5 a1 D2 \) K
% p2 @6 {' x& I3 Hy = dct(x,n,dim)计算沿维度dim的变换。 要输入维度并使用默认值n,请将第二个参数指定为空,[]。3 Q* L% q8 J0 r4 t) c
2 Y- t6 k* d2 J7 l; j
y = dct(___,'Type',dcttype)指定要计算的离散余弦变换的类型。 有关详细信息,请参见离散余弦变换。 此选项可以与任何以前的语法结合使用。
5 r0 g" R1 m2 B% h6 _# Q; r# ~. A  o) V6 I
Discrete Cosine Transform+ p! b6 X/ h! |5 T: E3 f3 v4 E

, W4 v4 f7 \& e离散余弦变换(DCT)与离散傅立叶变换密切相关。 您通常可以从几个DCT系数非常精确地重建序列。 此属性对需要数据减少的应用程序很有用。+ Z& O. {( [5 D: Y1 m% t+ e  H
% v+ A- M7 S1 w, o; u
DCT有四种标准型号。 对于长度为N的信号x,以及具有δkℓ的Kronecker delta,变换由下式定义:5 ~7 S- P7 z- ?

' K; t! d4 a8 u. {" a" D  F* o( u& E # m- w/ {: e1 S6 q! H( F8 `
# R' O: A$ b' ?1 ~7 b# R, v
该系列从n = 1和k = 1索引,而不是通常的n = 0和k = 0,因为MATLAB®向量从1到N而不是从0到N - 1。
& K3 L' L& z5 L- t3 M
/ B% ]3 |/ E- o' H) P: V: QDCT的所有变体都是单一的(或等效地,正交):要找到它们的反转,在每个定义中切换k和n。 特别地,DCT-1和DCT-4是它们自己的逆,并且DCT-2和DCT-3是彼此相反的。
5 V) l7 w! C- a: _
/ t' m1 ^( H) F6 c. DEnergy Stored in DCT Coefficients
) p  ]7 m  m1 q) ]0 }. Z# a/ h# r2 W- \6 Y- x8 k
找出有多少DCT系数代表序列中99%的能量。
9 N- ^  f9 s! g3 l! y! I4 u" u) e. l! x# e1 {
  • 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/ J3 _$ M' T
   9 [" e- n/ ]7 z5 l
得到:2 k  _$ I; Z, W: D. Z

6 K9 s+ {: R1 S8 ], D$ U" ^. C2 G( |% J9 L0 X+ N8 ^

9 G3 ~& r+ V* L" P! A0 X; Z# ?3 s# n/ A7 v1 X  ~6 q
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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