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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

3 n; e* o, u8 c, {) odct7 i' z# l( r3 S. K# c$ \
Discrete cosine transform7 g8 h1 }' o% n* H$ D6 ^

! g) f8 C/ O9 U- _) W! V$ X& t* \0 ZSyntax% D4 B( Q) R' ~! u, i5 p3 U9 {8 p

' a! A3 r; D* l8 ^y = dct(x)# I9 C& m  [. i4 \
8 U* L7 |9 B  m% H3 O
y = dct(x,n)' I+ N& a$ Z7 G" A$ Z# l- r

8 j; C6 i3 Z+ _4 oy = dct(x,n,dim)
$ O/ a: @; q: o- I& C# o9 F% J: ]7 W& u& k# C
y = dct(___,'Type',dcttype)
  A# P  ^1 J, I0 C" k) c5 C, g; `8 Y& j$ c& p8 y
Description
$ Z/ b# `! e3 y8 `/ t  B* M1 F, ~! ]0 @2 W7 q% T) T+ y8 m0 a; L2 E
y = dct(x)返回输入数组x的酉离散余弦变换。 输出y的大小与x相同。 如果x具有多个维度,则dct沿第一个数组维度运行,其大小大于1。
" j# ^* N1 L, R  _5 s" [
/ Z% {$ y* S$ p7 T: k$ q. d' _y = dct(x,n)在转换之前将x的相关维度填充或截断为长度n。
% ]' F; b7 w+ g5 y6 A! u7 }7 _% C* ]# P) y
y = dct(x,n,dim)计算沿维度dim的变换。 要输入维度并使用默认值n,请将第二个参数指定为空,[]。
2 _! W$ s, U: J  R4 h
. Y# k' l# s# l9 c- i9 A5 jy = dct(___,'Type',dcttype)指定要计算的离散余弦变换的类型。 有关详细信息,请参见离散余弦变换。 此选项可以与任何以前的语法结合使用。
) Q" m0 L* l2 _3 B2 ]! E( R
% V" e9 ^2 m- o/ _Discrete Cosine Transform5 Z0 o( A( ]3 `9 X& P4 ?1 u
2 F4 ^7 z- b% Y
离散余弦变换(DCT)与离散傅立叶变换密切相关。 您通常可以从几个DCT系数非常精确地重建序列。 此属性对需要数据减少的应用程序很有用。
3 K6 K$ _2 o; ~6 Q. X2 h" }! m7 h$ ]1 k! C4 e6 N; H2 p
DCT有四种标准型号。 对于长度为N的信号x,以及具有δkℓ的Kronecker delta,变换由下式定义:
3 R5 F) N! G6 {
/ [! f! l8 o0 N5 ~3 i& q. k! T' G : X) K* {4 N& o( B' U2 @
) a5 r! {0 N* J- P
该系列从n = 1和k = 1索引,而不是通常的n = 0和k = 0,因为MATLAB®向量从1到N而不是从0到N - 1。
* Z: N! I5 c4 h& c5 N- S* {8 }& e7 {
DCT的所有变体都是单一的(或等效地,正交):要找到它们的反转,在每个定义中切换k和n。 特别地,DCT-1和DCT-4是它们自己的逆,并且DCT-2和DCT-3是彼此相反的。
' f  ^) m0 B& O+ Z. e& H& B
* M9 ?' x; a0 z: z3 @: k3 |Energy Stored in DCT Coefficients  T/ k, c) v7 T; B1 \

- v, }% e! b8 a% _( I: `找出有多少DCT系数代表序列中99%的能量。# _* E8 q6 V5 j/ l( j
0 E# e$ V! Y: i0 E: W- m- T
  • 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')  S. I" _" A3 {# U
   
4 i* P: d0 r# o得到:
/ R' N$ s; m( Z% x 7 I0 }2 c6 {) O6 l

$ Z$ p4 G0 G: s3 V: ~$ G! G! }- M0 }( e; w% L- G

) T8 \+ a/ z9 J, O+ ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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