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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
1 I7 s9 }! _8 Q) O0 ?- ^2 b
dct
4 h* I$ e6 |$ `4 ~/ o+ i- w* h0 E3 VDiscrete cosine transform; d# R4 _" c, A" G
" F4 ^$ B5 z+ {
Syntax
0 N7 i5 G& |. r0 E8 G3 C5 w2 ]8 M: Y5 |7 N8 ^6 E, s: b' J
y = dct(x)
1 f% o  O  m' w; ~7 B' f  }
/ e/ X( g9 i7 T4 U  N3 _8 Ny = dct(x,n)
; z1 q% Y3 G6 `' R- r8 B' C, i/ W, F& `1 U- b- @/ O! s% v
y = dct(x,n,dim)7 o6 k% L/ ]: [: r, r2 }

- k5 B6 {4 Q# I: b" my = dct(___,'Type',dcttype), R9 s' d$ P6 J! h1 v

# L9 m' }% i/ P, R% k1 n# c  q9 O1 tDescription
' d8 d: [" A  V0 K5 ~* o
- m3 t% u* e* d% b- }- Iy = dct(x)返回输入数组x的酉离散余弦变换。 输出y的大小与x相同。 如果x具有多个维度,则dct沿第一个数组维度运行,其大小大于1。7 _8 ]& ]  w7 w/ I3 L/ a
& L2 K2 f9 z1 [. k" m
y = dct(x,n)在转换之前将x的相关维度填充或截断为长度n。8 `' D" g+ {2 H- J
  K0 ]% S2 r( ]! @& i, D! A
y = dct(x,n,dim)计算沿维度dim的变换。 要输入维度并使用默认值n,请将第二个参数指定为空,[]。
3 N0 f5 M3 Q0 {4 r7 R
$ I) G, K# o0 s1 J4 {$ V; Ny = dct(___,'Type',dcttype)指定要计算的离散余弦变换的类型。 有关详细信息,请参见离散余弦变换。 此选项可以与任何以前的语法结合使用。
) g$ t2 ^; z% L/ a9 ?' x" A' n3 i, D. J; n2 z$ w
Discrete Cosine Transform% C: d8 j9 K* N5 [: l6 w: Q
; ]0 F/ T; H7 }0 Z$ |
离散余弦变换(DCT)与离散傅立叶变换密切相关。 您通常可以从几个DCT系数非常精确地重建序列。 此属性对需要数据减少的应用程序很有用。
8 }6 h  j9 }- e* l2 P
9 |, r; l0 N1 c: I; D0 _( jDCT有四种标准型号。 对于长度为N的信号x,以及具有δkℓ的Kronecker delta,变换由下式定义:  R1 M# [4 t# K% T5 _$ X2 P! ?
6 J, P' c, n6 U1 B, d
" M3 ]6 k8 ]$ }; _" s+ y& T% y5 @
* ^% `2 ]7 B" L: y3 s# w0 p7 ?2 G
该系列从n = 1和k = 1索引,而不是通常的n = 0和k = 0,因为MATLAB®向量从1到N而不是从0到N - 1。
" {' P! E% e% @3 o. v
1 `- t# r+ k3 g6 \DCT的所有变体都是单一的(或等效地,正交):要找到它们的反转,在每个定义中切换k和n。 特别地,DCT-1和DCT-4是它们自己的逆,并且DCT-2和DCT-3是彼此相反的。
7 x9 V# w9 x7 g# W% {5 x' A% F
% a4 w3 x# C3 s" [# IEnergy Stored in DCT Coefficients
! X6 D3 o* F2 l4 T* |+ W, h8 ~* L8 d, w  ?
找出有多少DCT系数代表序列中99%的能量。; n( Z' `; K% q
5 s1 N. d4 g! i/ m; }( l
  • 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 O% @3 u! }/ p+ K
   
3 S+ c$ n7 e+ a) s! H: F得到:
, K4 Z  W$ V  D1 t
# W9 D: Y+ X# J% U& w" X1 J; {3 H; I6 z0 f- D

1 E! Y) E4 s! [7 `7 H# z1 E$ T5 d
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-5 15:24 , Processed in 0.109375 second(s), 27 queries , Gzip On.

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

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

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