function dist = dist_misval(A,B,MODE)

% dist = dist_misval(A,B,MODE)

nr_mis_val = sum(sum(~finite(A))) + sum(sum(~finite(B)));

dif=A-B*ones(1,size(A,2));
if nr_mis_val == 0
   if MODE==1
      dist=max(abs(dif),[],1);
   elseif MODE==2
      dist=sqrt(sum(dif.^2,1));
   else
      dist=sum(abs(dif),1);
   end
else
   if MODE==1
      dist=max(abs(dif),[],1);
   elseif MODE==2
      Nrdim=size(dif,1);
      Q=sum(finite(dif),1);
      Q(find(Q==0))=NaN;
      dif(find(~finite(dif)))=0;
      dist=sqrt((Nrdim*Q.^-1).*sum(dif.^2,1));
   else
      Nrdim=size(dif,1);
      Q=sum(finite(dif),1);
      Q(find(Q==0))=NaN;
      dif(find(~finite(dif)))=0;
      dist=(Nrdim*Q.^-1).*sum(abs(dif),1);
   end
end
