function pdlm=dlm(ts,fwhm_file,df,mask_file,mask_thresh,nconj,nvar); %DLM finds P-values using the discrete local maxima method. % % PDLM = DLM( TS , FWHM_FILE [, DF [, MASK_FILE [, MASK_THRESH % [, NCONJ [, NVAR ]]]]]) % % TS is a vector of statistic values, the first one must be > 1. % % For other parameters see STAT_SUMMARY. % % PDLM is the row vector of DLM P-values. if nargin<3; df=Inf; end if nargin<4; mask_file=[]; end if nargin<5; mask_thresh=[]; end if nargin<6; nconj=1; end if nargin<7; nvar=1; end d=fmris_read_image(fwhm_file,0,0); if ~isempty(mask_file) & isempty(mask_thresh) mask_thresh=fmri_mask_thresh(mask_file); end if ~isempty(mask_file) mask_thresh1=mask_thresh(1); if length(mask_thresh)>=2 mask_thresh2=mask_thresh(2); else mask_thresh2=Inf; end d=fmris_read_image(mask_file,1:d.dim(3),1); mask=d.data; mask= (mask>mask_thresh1 & mask<=mask_thresh2); else mask=ones(d.dim(1),d.dim(2),d.dim(3)); end vs=find(mask); N=length(vs); nbrs=[]; for k=1:d.dim(3) n0=mask(:,:,k); n1=conv2(n0,ones(3,1),'same'); n2=conv2(n0,ones(1,3),'same'); n3=n0; if k>1 n3=n3+mask(:,:,k-1); end if k0)./(s.*sqrt(s-ones(m,1)*hz.^2)); Q1(irho,l,:)=1-erfc(hz/sqrt(2))/2; Q2(irho,l,:)=1-erfc(hz/sqrt(2))+mean(f).*(y0.*hz)/pi; end end dpz=1/nz*0.001; pzz=(0:nz)/nz*0.001; pdlm=zeros(1,nzs); for iz=1:length(zs) PQs=0; for ni=1:64 if nn(ni)>0 [n1,n2,n3]=ind2sub([4 4 4],ni); ns=[n1 n2 n3]-1; PQ=1; for l=1:3 if ns(l)==2 PQ=PQ.*Q1(iz,l,:); end if ns(l)==3 PQ=PQ.*Q2(iz,l,:); end end PQs=PQs+PQ*nn(ni); end end pdlmv=[0 cumsum(PQs(:))'*dpz]; pdlm(iz)=interp1(pzz,pdlmv,pt(iz)); end return