Line | |
---|
1 | function setsdpvar(X,value,ls) |
---|
2 | %SETSDPVAR Obsolete, use ASSIGN instead |
---|
3 | |
---|
4 | % Author Johan Löfberg |
---|
5 | % $Id: setsdpvar.m,v 1.6 2005/04/29 08:05:01 joloef Exp $ |
---|
6 | |
---|
7 | if nargin<3 |
---|
8 | ls = 0; |
---|
9 | end |
---|
10 | |
---|
11 | if ~isa(X,'sdpvar') |
---|
12 | error('First argument should be an SDPVAR object.'); |
---|
13 | end |
---|
14 | |
---|
15 | if ~isa(value,'double') |
---|
16 | error('Second argument should be a DOUBLE.'); |
---|
17 | end |
---|
18 | |
---|
19 | if ~isequal(size(X),size(value)) |
---|
20 | error('Both arguments must have same size') |
---|
21 | end |
---|
22 | if ~isa(X,'sdpvar') |
---|
23 | error('First arguments must be an sdpvar object') |
---|
24 | end |
---|
25 | |
---|
26 | x_lmi_variables = X.lmi_variables; |
---|
27 | b = value(:)-X.basis(:,1); |
---|
28 | A = X.basis(:,2:end); |
---|
29 | feas_var = A\b; |
---|
30 | |
---|
31 | if ~ls |
---|
32 | if norm(A*feas_var-b)>sqrt(eps) |
---|
33 | error('Inconsistent assignment') |
---|
34 | end |
---|
35 | end |
---|
36 | |
---|
37 | sol = yalmip('getsolution'); |
---|
38 | keep_these = find(~ismember(sol.variables,x_lmi_variables)); |
---|
39 | sol.optvar = [sol.optvar(keep_these);feas_var(:)]; |
---|
40 | sol.variables = [sol.variables(keep_these);x_lmi_variables(:)]; |
---|
41 | yalmip('setallsolution',sol); |
---|
42 | |
---|
43 | |
---|
44 | |
---|
Note: See
TracBrowser
for help on using the repository browser.