MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today**New to MATLAB?**

Asked by Gian Lorenzo
on 14 May 2013

clear all syms x y l1 l2 l3 %%Generate symb var for multipliers v=[x y l1 l2 l3]; g1=(y-3)/sqrt((x-2)^2+(y-3)^2)+l1+l2-l3; %% Gradient condition g2=(x-2)/sqrt((x-2)^2+(y-3)^2)+l1;

cs1=l1(x+y); %% Complementary slackness conditions cs2=l2*(x-2); cs3=l3*(x+2);

[x, y, l1, l2, l3] = solve(g1==0,g2==0,cs1==0,cs2==0,cs3==0, x, y, l1,... l2, l3); sol=[x, y, l1, l2, l3];

I have this KKT system. Other times when I used the solve command I noticed that in the solution matrix the variables are not reported in the specified order.

How do I make sure that in the sol matrix the variable are the right one (without checking manually, that is).

In the example above, having the solutions, I can see that into sol x,y are the two rightmost columns. If I switch like this

[ l1, l2, l3, *x, y,*] = solve(g1==0,g2==0,cs1==0,cs2==0,cs3==0, x, y, l1,... l2, l3);

then everything goes ok. I need to now why this happens in order not to make this mistake again when I don't have solutions. Thanks

*No products are associated with this question.*

Answer by Walter Roberson
on 14 May 2013

Accepted answer

Use the structure return form of solve and then extract by structure field name into the variables you want.

## 0 Comments