0001 function [ Y, Yav ] = SurfStatNorm( Y, mask, subdiv );
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
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