u = sdpvar(repmat(nu,1,N),repmat(1,1,N)); x = sdpvar(repmat(nx,1,N+1),repmat(1,1,N+1)); d = binvar(repmat(2,1,N),repmat(1,1,N)); constraints = []; objective = 0; for k = 1:N objective = objective + norm(Q*x{k},1) + norm(R*u{k},1); Model1 = [x{k+1} == A*x{k} + B1*u{k}, x{k}(1) >= 0]; Model2 = [x{k+1} == A*x{k} + B2*u{k}, x{k}(1) <= 0]; constraints = [constraints, implies(d{k}(1), Model1), implies(d{k}(2), Model2)]; constraints = [constraints, sum(d{k}) >= 1, -1 <= u{k}<= 1, -5<=x{k}<=5]; end constraints = [constraints, -5<=x{k+1}<=5]; controller = optimizer(constraints, objective,sdpsettings('verbose',1),x{1},u{1});