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


% psum - calculate partial sums
%
% SYNOPSIS
%	psum(X, n)
%
% DESCRIPTION
% 	The nth partial sum in the cosine series for X is returned.

% 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 S = psum(X, n)

N = min(size(X)); X = dct(X(1:N, 1:N), N);

c = sqrt(2/N) * ones(1,N); c(1) = c(1)/sqrt(2);

S = zeros(N);

u = 0; v = 2; inc = 1;

while (n > 0)
  v = v - inc; u = u + inc;
  if (u > N)
    v = v + 2; u = N; inc = -1;
  elseif (v == 0)
    v = 1; inc = -1;
  elseif (v > N)
    u = u + 2; v = N; inc = 1;
  elseif (u == 0)
    u = 1; inc = 1;
  end
  S = S + c(v)*c(u) * X(v,u) * basis(v,u,N);
  n = n - 1;
end