www.pudn.com > jpegtool_matlab.rar > dctmat.m


% dctmat - build the NxN matrix for the cosine transform
%
% SYNOPSIS
%	dctmat
%	dctmat(N)
%
% DESCRIPTION
% 	The NxN matrix for the cosine transform is returned. N defaults to 8.
%
% EXAMPLE
%	If X is NxN, then
%	  c = dctmat(N); c * X * c'
%	would give the cosine transform of X.

% Copyright (C) 1995-1997 Darrel Hankerson and Greg A. Harris
%
% This file is part of the JPEGtool collection of scripts for Octave
% and Matlab; see http://www.dms.auburn.edu/compression
%
% The JPEGtool collection is free software; you can redistribute it
% and/or modify it under the terms of the GNU General Public License
% as published by the Free Software Foundation; either version 2, or
% (at your option) any later version.
%
% The collection is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this package; see the file COPYING.  If not, write to the
% Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
% 02111-1307, USA.

function c = dctmat(N)

if (nargin == 0)
  N = 8;
end

% Build the NxN cosine transform
c = ones(N);
jj = (1:2:2*N) * pi/(2*N);

for u=1:N-1
  c(u+1,:) = cos(jj*u);
end
c = sqrt(2/N)*c;
c(1,:) = c(1,:)/sqrt(2);