function [gam1,fval] = gamequiv(A,gam) % exploring |Ag| global nstate nstate=size(A,1); m = nstate; global LOCGAM LOCA LOCGAM = gam; A = A(:,:,end); LOCA = A; xdim = m; Aeq = ones(1,xdim); Beq = 0; %Ain = -eye(m); %Bin = ones(m,1); %for i=1:m % Bin(i) = min(gam(:,i)); %end x0 = randn(m,1)/1000; %[x,fval] = fmincon(@myobjm,x0,Ain,Bin,Aeq,Beq); [x,fval] = fmincon(@myobjm,x0,[],[],Aeq,Beq); X = repmat(x',[m 1]); gam1 = LOCGAM + X; s0 = sum(sum(LOCA.*LOCGAM)); X = repmat(x',[m 1]); gam1 = LOCGAM + X; s1 = sum(sum(LOCA.*LOCGAM)); fval = (s1-s0)^2; % make 2 sums close %keyboard return function y = myobjm(x) global LOCGAM LOCA global nstate m = nstate; s0 = sum(sum(LOCA.*LOCGAM)); X = repmat(x',[m 1]); gam = LOCGAM + X; s1 = sum(sum(LOCA.*LOCGAM)); y1 = (s1-s0)^2; % make 2 sums close %y2 = sum(sum(gam.^2)); % make gam small y2 = max(max(abs(gam))); % make gam small y = y1 + y2; return