www.pudn.com > tftb2002toolbox.rar > integ2d.m


function som=integ2d(mat,x,y);
%INTEG2D Approximate 2-D integral.
%	SOM=INTEG2D(MAT,X,Y) approximates the 2-D integral of  
%	matrix MAT according to abscissa X and ordinate Y.
%
%	MAT : MxN matrix to be integrated
%	X   : N-row-vector indicating the abscissa integration path 	
%				(default : 1:N)
%	Y   : M-column-vector indicating the ordinate integration path 
%				(default : 1:M)	
%	SOM : result of integration
%
%	Example :      
%	 S = altes(256,0.1,0.45,10000) ;
%	 [TFR,T,F] = tfrscalo(S,21:190,8,'auto') ;
%	 E = integ2d(TFR,T,F)
%
%	See also INTEG.

%	P. Goncalves, October 95
%	Copyright (c) 1995 Rice University
%
%	------------------- CONFIDENTIAL PROGRAM -------------------- 
%	This program can not be used without the authorization of its
%	author(s). For any comment or bug report, please send e-mail to 
%			    lemoine@alto.unice.fr 

[M,N]=size(mat);

if nargin<1,
 error('At least one parameter required');
elseif nargin==1,
 x=1:N; y=(1:M)';
elseif nargin==2,
 y=(1:M)';
end

[xr,xc]=size(x);
[yr,yc]=size(y);

if (xr>xc & xr~=1),
 error('X must be a row-vector');
elseif (yc>yr & yc~=1),
 error('Y must be a column-vector');
elseif (N~=xc),
 error('MAT must have as many columns as X');
elseif (M~=yr),
 error('MAT must have as many rows as Y');
end

mat = (sum(mat.').'-mat(:,1)/2-mat(:,N)/2).*(x(2)-x(1)) ;
dmat = mat(1:M-1)+mat(2:M) ;
dy = (y(2:M)-y(1:M-1))/2 ;
som = sum(dmat.*dy) ;