Home > SurfStat > SurfStatNorm.m

SurfStatNorm

PURPOSE ^

Normalizes by subtracting the global mean, or dividing by it.

SYNOPSIS ^

function [ Y, Yav ] = SurfStatNorm( Y, mask, subdiv );

DESCRIPTION ^

Normalizes by subtracting the global mean, or dividing by it.

 Usage: [ Y, Yav ] = SurfStatNorm( Y [,mask [,subdiv ] ] );

 Y      = n x v matrix or n x v x k array of data, v=#vertices,
          or memory map of same. 
 mask   = 1 x v logical vector, 1=inside, 0=outside,
        = logical(ones(1,v)) by default.
 subdiv = 's' for Y=Y-Yav (default) or 'd' for Y=Y/Yav.

 Y   = n x v matrix or n x v x k array of normalized data, or memory map
       of same. Note that if Y is a memory map, then Y is always
       overwritten with the normalized data.
 Yav = n x 1 vector or n x k matrix of mean(Y in mask).

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [ Y, Yav ] = SurfStatNorm( Y, mask, subdiv );
0002 
0003 %Normalizes by subtracting the global mean, or dividing by it.
0004 %
0005 % Usage: [ Y, Yav ] = SurfStatNorm( Y [,mask [,subdiv ] ] );
0006 %
0007 % Y      = n x v matrix or n x v x k array of data, v=#vertices,
0008 %          or memory map of same.
0009 % mask   = 1 x v logical vector, 1=inside, 0=outside,
0010 %        = logical(ones(1,v)) by default.
0011 % subdiv = 's' for Y=Y-Yav (default) or 'd' for Y=Y/Yav.
0012 %
0013 % Y   = n x v matrix or n x v x k array of normalized data, or memory map
0014 %       of same. Note that if Y is a memory map, then Y is always
0015 %       overwritten with the normalized data.
0016 % Yav = n x 1 vector or n x k matrix of mean(Y in mask).
0017 
0018 if isnumeric(Y)
0019     [n,v,k]=size(Y);
0020 else
0021     Ym=Y;
0022     s=Ym.Format{2};
0023     if length(s)==2
0024         s=s([2 1]);
0025         k=1;
0026     else
0027         s=s([3 1 2]);
0028         k=s(3);
0029     end
0030     n=s(1);
0031     v=s(2);
0032 end    
0033     
0034 if nargin<2 | isempty(mask)
0035     mask=logical(ones(1,v));
0036 end
0037 if nargin<3
0038     subdiv = 's';
0039 end
0040 
0041 if isnumeric(Y)
0042     Yav=squeeze(mean(double(Y(:,mask,:)),2));
0043     for i=1:n
0044         for j=1:k
0045             if subdiv(1) == 's'
0046                 Y(i,:,j)=Y(i,:,j)-Yav(i,j);
0047             else
0048                 Y(i,:,j)=Y(i,:,j)/Yav(i,j);
0049             end
0050         end
0051     end
0052 else
0053     Yav=zeros(n,k);
0054     for i=1:n
0055         for j=1:k
0056             if length(s)==2
0057                 Y=Ym.Data(1).Data(:,i);
0058             else
0059                 Y=Ym.Data(1).Data(:,j,i);
0060             end
0061             Yav(i,j)=mean(double(Y));
0062             if subdiv(1) == 's'
0063                 Y=Y-Yav(i,j);
0064             else
0065                 Y=Y/Yav(i,j);
0066             end
0067             if length(s)==2
0068                 Ym.Data(1).Data(:,i)=Y;
0069             else
0070                 Ym.Data(1).Data(:,j,i)=Y;
0071             end            
0072         end
0073     end
0074     Y=Ym;
0075 end
0076 
0077 return
0078 end
0079     
0080     
0081     
0082

Generated on Fri 26-Sep-2008 14:05:29 by m2html © 2003