function Y=plot(varargin)%PLOT (overloaded)% Fast version for plotting simple PWA objectsif nargin == 1X = varargin{1};if isa(varargin{1},'sdpvar')if length(X) == 1if isequal(full(getbase(X)),[zeros(length(X),1) eye(length(X))])extstruct = yalmip('extstruct',getvariables(X));if ~isempty(extstruct)if isequal(extstruct.fcn,'pwa_yalmip') | isequal(extstruct.fcn,'pwq_yalmip')%#ok% Maybe some reduction has been performed so we% actually can plot itxarg = extstruct.arg{2};switch extstruct.arg{3}case ''otherwisePn = polytope; Bi = {}; Ci = {};index = extstruct.arg{5};for i = 1:length(extstruct.arg{1})% Pick out rowfor 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,:);endif 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);elseif nnz([extstruct.arg{1}{i}.Ai{:}]) == 0Pn = [Pn extstruct.arg{1}{i}.Pn];Bi = cat(2, Bi, extstruct.arg{1}{i}.Bi);Ci = cat(2, Ci, extstruct.arg{1}{i}.Ci);elsehold on[extstruct.arg{1}{i}.Pn,extstruct.arg{1}{i}.Bi,extstruct.arg{1}{i}.Ci,extstruct.arg{1}{i}.Ai] = reduce_basis(extstruct.arg{1}{i}.Pn,extstruct.arg{1}{i}.Bi,extstruct.arg{1}{i}.Ci,extstruct.arg{1}{i}.Ai,xarg);Y = mpt_plotPWQ(extstruct.arg{1}{i}.Pn, extstruct.arg{1}{i}.Ai,extstruct.arg{1}{i}.Bi,extstruct.arg{1}{i}.Ci);hold offendendendif ~isempty(Bi),hold on[Pn,Bi,Ci] = reduce_basis(Pn,Bi,Ci,[],xarg);if size(Bi{1},2) > 2error('Cannot plot high-dimensional PWA functions')endmpt_plotPWA(Pn, Bi, Ci);hold offenddrawnowreturnendendendendelsefor j = 1:length(X)plot(extsubsref(X,j));endreturnendendend% More complex expression. Get epi-graph model% project to our variables, and extract defining facetsif nargin == 1[p,Bi,Ci,Pn,Pfinal] = pwa(varargin{1});%#okelseif isa(varargin{2},'lmi')[p,Bi,Ci,Pn,Pfinal] = pwa(varargin{1},varargin{2});%#okelseerror('Second argument should be a domain defining SET object.');endif nargout>0Y = mpt_plotPWA(Pn,Bi,Ci);elsempt_plotPWA(Pn,Bi,Ci);endfunction S = extractrow(S,index)for i = 1:length(S)S{i} = S{i}(index,:);endfunction [Pnnew,Binew,Cinew,Ainew] = reduce_basis(Pn,Bi,Ci,Ai,xarg);%if ~isequal(getbase(xarg),[zeros(length(xarg),1) eye(length(xarg))])base = getbase(xarg);c = base(:,1);D = base(:,2:end);Pnnew = [];Ainew = [];Binew = [];Cinew = [];for i = 1:length(Pn)[H,K] = double(Pn(i));Phere = polytope(H*D,K-H*c);if isfulldim(Phere)Pnnew = [Pnnew Phere];if ~isempty(Ai)Cinew{end+1} = Ci{i} + Bi{i}*c + c'*Ai{i}*c;Binew{end+1} = Bi{i}*D + 2*c'*Ai{i}*D;Ainew{end+1} = D'*Ai{i}*Ai{i};elseCinew{end+1} = Ci{i} + Bi{i}*c;Binew{end+1} = Bi{i}*D;endendendelsePnnew = Pn;Ainew = Ai;Binew = Bi;Cinew = Ci;end
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。