


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).

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