function philp = optphi(cc,m,n) global Ainf Binf d = 1; if size(Ainf,2)~=m^n Ainf = []; end if isempty(Ainf) Ainf = zeros(0,m^n); Binf = zeros(0,1); mn = repmat([m],[1 n]); rind = 0; for ind1 = 1:m^n for ind2 = ind1+1:m^n x = ind2coord(ind1,mn); y = ind2coord(ind2,mn); if length(find(x~=y))==1 % Hamming dist == 1 for s = [-1,1] rind = rind+1; %if rind==131 % global x0 y0 % ind1,ind2,x,y % x0=x,y0=y % return %end Ainf(rind,ind1) = s; Ainf(rind,ind2) = -s; Binf(rind,1) = d; end end end end end cc = cc(:); %LB = zeros(size(cc))-1e-9; %UB = LB + d*n + 1e-9; [xp,fvalp] = linprog( cc,Ainf,Binf,[],[],[],[]); [xn,fvaln] = linprog(-cc,Ainf,Binf,[],[],[],[]); if abs(fvalp)>abs(fvaln) x = xp; fval = fvalp; else x = xn; fval = fvaln; end philp = x(:)'; fvalp = abs(fval); %[mval,y] = optmask(A0); %if abs(fvalp-mval) > 1e-9 % 'not good' % keyboard %end return