source: proiecte/pmake3d/make3d_original/Make3dSingleImageStanford_version0.1/third_party/opt/yalmip/extras/@lmi/plus.m @ 37

Last change on this file since 37 was 37, checked in by (none), 14 years ago

Added original make3d

File size: 863 bytes
Line 
1function X = plus(X,Y)
2%PLUS Merges two LMI objects to one LMI
3
4% Author Johan Löfberg
5% $Id: plus.m,v 1.10 2006/08/10 13:15:45 joloef Exp $
6
7if isa(X,'constraint')
8    X = set(X);
9elseif isa(X,'sdpvar')
10    X = set(X);
11end
12
13if isa(Y,'constraint')
14    Y = set(Y);
15elseif isa(Y,'sdpvar')
16    Y = set(Y);
17end
18
19% Support set+ []
20if isempty(X)
21    X = Y;
22    return
23elseif isempty(Y)
24    X = X;
25    return
26end
27
28if ~((isa(X,'lmi')) & (isa(Y,'lmi')))
29    error('Both arguments must be SET objects')
30end
31
32nX = length(X.clauses);
33nY = length(Y.clauses);
34
35if nX+nY == 0
36    return
37end
38
39X.clauses = {X.clauses{:},Y.clauses{:}};
40X.LMIid = [X.LMIid Y.LMIid];
41
42% VERY FAST UNIQUE BECAUSE THIS IS CALLED A LOT OF TIMES....
43i = sort(X.LMIid);
44i = i(diff([i NaN])~=0);
45if length(i)<nX+nY   
46    [i,j] = unique(X.LMIid);
47    X = subsref(X,struct('type','()','subs',{{j}}));
48end
Note: See TracBrowser for help on using the repository browser.