1 | function Y=plot(varargin) |
---|
2 | %PLOT (overloaded) |
---|
3 | |
---|
4 | % Author Johan Löfberg |
---|
5 | % $Id: plot.m,v 1.1 2006/08/10 18:00:21 joloef Exp $ |
---|
6 | |
---|
7 | % Fast version for plotting simple PWA objects |
---|
8 | if nargin == 1 |
---|
9 | X = varargin{1}; |
---|
10 | if isa(varargin{1},'sdpvar') |
---|
11 | if length(X) == 1 |
---|
12 | if isequal(full(getbase(X)),[0 1]) |
---|
13 | extstruct = yalmip('extstruct',getvariables(X)); |
---|
14 | if ~isempty(extstruct) |
---|
15 | if isequal(extstruct.fcn,'pwa_yalmip') | isequal(extstruct.fcn,'pwq_yalmip')%#ok |
---|
16 | switch extstruct.arg{3} |
---|
17 | case '' |
---|
18 | otherwise |
---|
19 | Pn = polytope; Bi = {}; Ci = {}; |
---|
20 | index = extstruct.arg{5}; |
---|
21 | for i = 1:length(extstruct.arg{1}) |
---|
22 | % Pick out row |
---|
23 | for j = 1:length(extstruct.arg{1}{i}.Bi) |
---|
24 | extstruct.arg{1}{i}.Bi{j} = extstruct.arg{1}{i}.Bi{j}(index,:); |
---|
25 | extstruct.arg{1}{i}.Ci{j} = extstruct.arg{1}{i}.Ci{j}(index,:); |
---|
26 | end |
---|
27 | if isempty(extstruct.arg{1}{i}.Ai{1}) |
---|
28 | Pn = [Pn extstruct.arg{1}{i}.Pn]; |
---|
29 | Bi = cat(2, Bi, extstruct.arg{1}{i}.Bi); |
---|
30 | Ci = cat(2, Ci, extstruct.arg{1}{i}.Ci); |
---|
31 | else |
---|
32 | if nnz([extstruct.arg{1}{i}.Ai{:}]) == 0 |
---|
33 | Pn = [Pn extstruct.arg{1}{i}.Pn]; |
---|
34 | Bi = cat(2, Bi, extstruct.arg{1}{i}.Bi); |
---|
35 | Ci = cat(2, Ci, extstruct.arg{1}{i}.Ci); |
---|
36 | else |
---|
37 | |
---|
38 | hold on |
---|
39 | mpt_plotPWQ(extstruct.arg{1}{i}.Pn, ... |
---|
40 | extstruct.arg{1}{i}.Ai, ... |
---|
41 | extstruct.arg{1}{i}.Bi, ... |
---|
42 | extstruct.arg{1}{i}.Ci, []); |
---|
43 | hold off |
---|
44 | end |
---|
45 | end |
---|
46 | end |
---|
47 | if ~isempty(Bi), |
---|
48 | mpt_plotPWA(Pn, Bi, Ci); |
---|
49 | end |
---|
50 | drawnow |
---|
51 | return |
---|
52 | end |
---|
53 | end |
---|
54 | end |
---|
55 | end |
---|
56 | end |
---|
57 | end |
---|
58 | end |
---|
59 | |
---|
60 | % More complex expression. Get epi-graph model |
---|
61 | % project to our variables, and extract defining facets |
---|
62 | if nargin == 1 |
---|
63 | [p,Bi,Ci,Pn,Pfinal] = pwa(varargin{1});%#ok |
---|
64 | elseif isa(varargin{2},'lmi') |
---|
65 | [p,Bi,Ci,Pn,Pfinal] = pwa(varargin{1},varargin{2});%#ok |
---|
66 | else |
---|
67 | error('Second argument should be a domain defining SET object.'); |
---|
68 | end |
---|
69 | if nargout>0 |
---|
70 | Y = mpt_plotPWA(Pn,Bi,Ci); |
---|
71 | else |
---|
72 | mpt_plotPWA(Pn,Bi,Ci); |
---|
73 | end |
---|
74 | |
---|
75 | function S = extractrow(S,index) |
---|
76 | for i = 1:length(S) |
---|
77 | S{i} = S{i}(index,:); |
---|
78 | end |
---|