76 lines
3.2 KiB
Matlab
Executable File
76 lines
3.2 KiB
Matlab
Executable File
function Y=plot(varargin)
|
|
%PLOT (overloaded)
|
|
|
|
% Fast version for plotting simple PWA objects
|
|
if nargin == 1
|
|
X = varargin{1};
|
|
if isa(varargin{1},'sdpvar')
|
|
if length(X) == 1
|
|
if isequal(full(getbase(X)),[0 1])
|
|
extstruct = yalmip('extstruct',getvariables(X));
|
|
if ~isempty(extstruct)
|
|
if isequal(extstruct.fcn,'pwa_yalmip') | isequal(extstruct.fcn,'pwq_yalmip')%#ok
|
|
switch extstruct.arg{3}
|
|
case ''
|
|
otherwise
|
|
Pn = polytope; Bi = {}; Ci = {};
|
|
index = extstruct.arg{5};
|
|
for i = 1:length(extstruct.arg{1})
|
|
% Pick out row
|
|
for j = 1:length(extstruct.arg{1}{i}.Bi)
|
|
extstruct.arg{1}{i}.Bi{j} = extstruct.arg{1}{i}.Bi{j}(index,:);
|
|
extstruct.arg{1}{i}.Ci{j} = extstruct.arg{1}{i}.Ci{j}(index,:);
|
|
end
|
|
if isempty(extstruct.arg{1}{i}.Ai{1})
|
|
Pn = [Pn extstruct.arg{1}{i}.Pn];
|
|
Bi = cat(2, Bi, extstruct.arg{1}{i}.Bi);
|
|
Ci = cat(2, Ci, extstruct.arg{1}{i}.Ci);
|
|
else
|
|
if nnz([extstruct.arg{1}{i}.Ai{:}]) == 0
|
|
Pn = [Pn extstruct.arg{1}{i}.Pn];
|
|
Bi = cat(2, Bi, extstruct.arg{1}{i}.Bi);
|
|
Ci = cat(2, Ci, extstruct.arg{1}{i}.Ci);
|
|
else
|
|
|
|
hold on
|
|
mpt_plotPWQ(extstruct.arg{1}{i}.Pn, ...
|
|
extstruct.arg{1}{i}.Ai, ...
|
|
extstruct.arg{1}{i}.Bi, ...
|
|
extstruct.arg{1}{i}.Ci, []);
|
|
hold off
|
|
end
|
|
end
|
|
end
|
|
if ~isempty(Bi),
|
|
mpt_plotPWA(Pn, Bi, Ci);
|
|
end
|
|
drawnow
|
|
return
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
% More complex expression. Get epi-graph model
|
|
% project to our variables, and extract defining facets
|
|
if nargin == 1
|
|
[p,Bi,Ci,Pn,Pfinal] = pwa(varargin{1});%#ok
|
|
elseif isa(varargin{2},'lmi')
|
|
[p,Bi,Ci,Pn,Pfinal] = pwa(varargin{1},varargin{2});%#ok
|
|
else
|
|
error('Second argument should be a domain defining SET object.');
|
|
end
|
|
if nargout>0
|
|
Y = mpt_plotPWA(Pn,Bi,Ci);
|
|
else
|
|
mpt_plotPWA(Pn,Bi,Ci);
|
|
end
|
|
|
|
function S = extractrow(S,index)
|
|
for i = 1:length(S)
|
|
S{i} = S{i}(index,:);
|
|
end
|