| 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 | ![]() |