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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

' k/ _. B2 \2 j- J5 J% d+ Udct- g$ w3 V6 o2 ^" J" A
Discrete cosine transform
0 W$ t1 `# A; R% H% |
: C$ {2 G! X, t( e4 r; @4 WSyntax
. i& |/ I6 B6 J( P1 ?# h+ Q7 p% b  O: }6 o4 \$ a
y = dct(x)' l) [; T" X* X, N, j) K  j
: f8 k% W. q4 p4 }
y = dct(x,n)
, B3 {# q7 d$ Y6 W+ }
4 a7 C2 |' ?' y* w! `! b# `, R% ky = dct(x,n,dim)
# q$ Q. m4 b5 w$ n# C  u. V/ {5 [  \9 a- {
y = dct(___,'Type',dcttype)
. q* B/ Y5 m. ^6 r- n( O9 k( E8 e3 |) O+ a( H
Description1 b, ~; ]4 E: ?/ n

" w' _1 w0 I  y- v+ @/ D: B3 t% vy = dct(x)返回输入数组x的酉离散余弦变换。 输出y的大小与x相同。 如果x具有多个维度,则dct沿第一个数组维度运行,其大小大于1。& b  I; d# t! W6 ^" i& k

+ T5 M2 I1 n! by = dct(x,n)在转换之前将x的相关维度填充或截断为长度n。
! ]+ O$ K) k! y/ T$ p  v6 e- g: P# U5 v7 T
y = dct(x,n,dim)计算沿维度dim的变换。 要输入维度并使用默认值n,请将第二个参数指定为空,[]。
* \. Q8 J. T, s0 g* M& J, m4 Y4 A) Z: q! p9 ?5 O0 ~
y = dct(___,'Type',dcttype)指定要计算的离散余弦变换的类型。 有关详细信息,请参见离散余弦变换。 此选项可以与任何以前的语法结合使用。
  f2 N8 G4 \7 e: j& L. l; o5 C! F
  d1 S! P7 A4 }9 `# QDiscrete Cosine Transform
$ v1 u1 H7 w" r1 t' w0 y' n7 g8 q1 q3 n
离散余弦变换(DCT)与离散傅立叶变换密切相关。 您通常可以从几个DCT系数非常精确地重建序列。 此属性对需要数据减少的应用程序很有用。
0 M3 Q4 i9 |) |) }; N5 [5 C1 `
' v, e% z9 \  W4 P1 d% r: |) YDCT有四种标准型号。 对于长度为N的信号x,以及具有δkℓ的Kronecker delta,变换由下式定义:! Q8 p; W% ]) d7 \' h; e) ~

8 p7 V, t5 b/ Y1 v+ W9 n) @9 v 0 E9 V9 c& E# g5 e" }- Y9 m
4 B) i0 k8 E* r4 U, l2 C, x# I. j
该系列从n = 1和k = 1索引,而不是通常的n = 0和k = 0,因为MATLAB®向量从1到N而不是从0到N - 1。
/ U6 V( ^# Y" T- k% n2 @. N7 }8 c
+ k9 o1 v) O3 s# n- [( A+ }7 bDCT的所有变体都是单一的(或等效地,正交):要找到它们的反转,在每个定义中切换k和n。 特别地,DCT-1和DCT-4是它们自己的逆,并且DCT-2和DCT-3是彼此相反的。: ~- E5 Q9 j& L) R. \
3 M$ G6 L6 m4 u2 f, D: I; x
Energy Stored in DCT Coefficients5 u) F2 Z" N& y( w( U( D) B

, n- z4 Q# g1 |' E6 K找出有多少DCT系数代表序列中99%的能量。
1 b' H0 x) B! N# f9 F
% v+ }4 Q! j, }( e" k
  • 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')9 C& X: x0 h, F8 O3 u6 g, \
   : C, U' B- Q# G, s8 A9 D+ H6 B
得到:. H. c3 ]. r$ H' z! M( J! t* A

2 ^5 h# D. ^! H. R" l4 s
) |( o+ e" m, G+ c8 k# x2 v8 ~/ N
9 ?! c1 S  c1 w* `
3 }' a" U( ^* \+ w4 `; a5 o
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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