0001 function [y,tw]=nt_mean_over_trials(x,w)
0002
0003
0004
0005
0006
0007
0008
0009
0010 if nargin<2; w=[]; end
0011 if nargin<1; error('!'); end
0012
0013 [m,n,o]=size(x);
0014
0015 if isempty(w);
0016 y=mean(x,3);
0017 tw=ones(m,n,1)*o;
0018 else
0019 [mw,nw,ow]=size(w);
0020 if mw~=m; error('!'); end
0021 if ow~=o; error('!'); end
0022 x=nt_unfold(x);
0023 w=nt_unfold(w);
0024 if nw==n;
0025 x=x.*w;
0026 x=nt_fold(x,m);
0027 w=nt_fold(w,m);
0028 y=sum(x,3)./sum(w,3);
0029 elseif nw==1;
0030 x=nt_vecmult(x,w);
0031 x=nt_fold(x,m);
0032 w=nt_fold(w,m);
0033 y=nt_vecmult(sum(x,3),1./sum(w,3));
0034 end
0035 tw=sum(w,3);
0036 end
0037