function [phi,phi1,K,S1,S2] = optphi12k(m0,n0) global m n n1 S1 S2 m = m0; n = n0; phi = zeros(m^n,1); K = zeros(m^n,1); LBK = -ones(size(phi)); UBK = ones(size(phi)); n1 = n-1; phi1 = zeros(m^n1,1); [Ainf,Binf] = lipab(m,n); [Ainf1,Binf1] = lipab(m,n1); LBf = zeros(m^n,1); UBf = n +zeros(m^n,1); LBf1 = zeros(m^n1,1); UBf1 = n1+zeros(m^n1,1); xdim = 2*m^n+m^n1; LB = [LBf; LBf1; LBK]; UB = [UBf; UBf1; UBK]; Ain = assembleblock({Ainf,Ainf1,zeros(0,m^n)}); Bin = [Binf; Binf1]; FN = randFN(m,-n,1,'not'); phi = FN{n}; FN = randFN(m,-n1,1,'not'); phi1 = FN{n1}; K = randn(size(K))/1000; x0 = [phi(:); phi1(:); K(:)]; [x,fval] = fmincon(@myobjm,x0,Ain,Bin,[],[],LB,UB); phi = x(1:m^n); phi1 = x(m^n+1:m^n+m^n1); K = x(m^n+m^n1+1:end); phi=round(phi-min(phi)); phi1=round(phi1-min(phi1)); ip = find(K>=0); in = find(K<0); K(ip) = K(ip)/sum(K(ip)); K(in) = K(in)/abs(sum(K(in))); fval = -fval; return function y = myobjm(x) global m n n1 phi = x(1:m^n); phi1 = x(m^n+1:m^n+m^n1); K = x(m^n+m^n1+1:end); ip = find(K>=0); in = find(K<0); K(ip) = K(ip)/sum(K(ip)); K(in) = K(in)/abs(sum(K(in))); s1 = phi'*K; K1 = getK1(K,m,n); s2 = 1 + phi1'*K1; %y = s2-s1; y = -s2; return