Signal Processing Toolbox | ![]() ![]() |
表示
y=
dct(x) y=
dct(x,n)
詳細
y = dct(x)
は、x
の離散コサイン変換を出力します。
Nはx
の長さで、x
とy
は同じ大きさです。x
が行列の場合、dct
はその各列を変換します。MATLABのベクトル表現は、0から(N-1)ではなく、1からNであるため、データ列には通常の n = 0,k = 0 の代わりに、n = 1,k = 1 のインデックスが付けられます。
y = dct(x,n)
は、変換の前にx
がn
より小さい場合ゼロを付加し、大きい場合n
以上を切り捨て、長さn
にします。
DCTは、離散フーリエ変換と密接に関連しています。しばしば、わずか数個のDCT係数から、きわめて正確にデータ列を復元することができます。これは、データ量を小さくする必要性のあるアプリケーションで役立つ特性です。
例題
データ列の99%のエネルギーを表現するDCT係数の数を求めます。
x=
(1:100) + 50*
cos((1:100)*
2*
pi/40); X=
dct(x); [XX,ind]=
sort(abs(X)); ind=
fliplr(ind); i=
1; while (norm([X(ind(1:i)) zeros(1,100-i)])/norm(X)<.99) i=
i + 1; end i=
3
参考
|
1次元FFT |
|
逆離散コサイン変換 |
dct2 |
2次元DCT (Image Processing Toolbox User's Guideを参照) |
idct2 |
2次元逆DCT (Image Processing Toolbox User's Guideを参照) |
参考文献
[1] Jain, A.K. Fundamentals of Digital Image Processing. Englewood Cliffs, NJ: Prentice-Hall, 1989.
[2] Pennebaker, W.B., and J.L. Mitchell. JPEG Still Image Data Compression Standard. New York, NY: Van Nostrand Reinhold, 1993. Chapter 4.
![]() | czt | decimate | ![]() |