function symb_pvec = amplexpr(pvec) %AMPLEXPR Converts SDPVAR variable to AMPL string % Author Johan Löfberg % $Id: amplexpr.m,v 1.3 2005/02/10 16:43:32 johanl Exp $ for pi = 1:size(pvec,1) for pj = 1:size(pvec,2) p = pvec(pi,pj); if isa(p,'double') symb_p = num2str(p); else LinearVariables = depends(p); x = recover(LinearVariables); exponent_p = full(exponents(p,x)); names = cell(length(LinearVariables),1); for i = 1:length(LinearVariables) names{i}=['x[' num2str(LinearVariables(i)) ']']; end symb_p = ''; if all(exponent_p(1,:)==0) symb_p = num2str(getbasematrix(p,0)); exponent_p = exponent_p(2:end,:); end for i = 1:size(exponent_p,1) coeff = getbasematrixwithoutcheck(p,i); switch full(coeff) case 1 coeff='+'; case -1 coeff = '-'; otherwise if coeff >0 coeff = ['+' num2str2(coeff)]; else coeff=num2str2(coeff); end end if strcmp(symb_p,'') & (strcmp(coeff,'+') | strcmp(coeff,'-')) symb_p = [symb_p coeff symbmonom(names,exponent_p(i,:))]; else symb_p = [symb_p coeff '*' symbmonom(names,exponent_p(i,:))]; end end if symb_p(1)=='+' symb_p = symb_p(2:end); end end symb_p = strrep(symb_p,'+*','+'); symb_p = strrep(symb_p,'-*','-'); symb_pvec{pi,pj} = symb_p; end end function s = symbmonom(names,monom) s = ''; for j = 1:length(monom) if monom(j)>0 if strcmp(s,'') s = [s names{j}]; else s = [s '*' names{j}]; end end if monom(j)>1 s = [s '^' num2str(monom(j))]; end end function s = num2str2(x) s = num2str(x); if isequal(s,'1') s = ''; end if isequal(s,'-1') s = '-'; end