function phi1 = collapsefperm(K,phi,m,n,perm) global Ainl Binl Ain1 Bin1 dims = repmat([m],[1 n]); dims1 = repmat([m],[1 n-1]); phi1 = zeros(1,m^(n-1)); % init phi1 to be plain-vanilla mean for xind2n = 1:m^(n-1) x2n = ind2coord(xind2n,dims1); ff = []; ww = []; for x1 = 1:m xind = coord2ind([x1 x2n],dims); ff(end+1) = phi(xind); end phi1(xind2n) = mean(ff); end %for xind2n = 1:m^(n-1) %rp = randperm(m^(n-1)); for xind2n = perm x2n = ind2coord(xind2n,dims1); ks = 0; ff = []; for x1 = 1:m xind = coord2ind([x1 x2n],dims); ks = ks + K(xind); ff(end+1) = phi(xind); end Y = allrho1(x2n,m); Yind = coord2ind(Y,dims1); ymax = max(phi1(Yind)); ymin = min(phi1(Yind)); d = ymax-ymin; if ks > 0 phi1(xind2n) = min(ymax + 1 - d,n-1); %phi1(xind2n) = max(ff); else phi1(xind2n) = max(ymin - 1 + d,0); %phi1(xind2n) = floor(phi1(xind2n)); %phi1(xind2n) = min(ff); end %if max(abs(Ain1*phi1'))>1+1e-9 % % not lip, back to boring % phi1(xind2n) = mean(ff); %end end return