📄 lpvrun.m
字号:
% extract data for desired grid pointsif exist('vWhx') vWh = xtract(vWhx,vindx); endif exist('vd0x') vd0 = xtract(vd0x,vindx); endvlpv = xtract(vlpvx,vindx);vf16 = xtract(vf16x,vindx);vnu = xtract(vnux,vindx);vparm = xtract(vparmx,vindx);% start with initial scaling vd0 or just use unscaled plant?if exist('vd0') vlpv1 = mdscl(vlpv,vd0,nmeas,nctrl);else vlpv1 = vlpv;end% 'sqlf': single quadratic Lyapunov function synthesis% 'pdlf': parameter dependent Lyapunov function synthesis% 'pdlfb': PDLF with "blending" (supply xmat01,ymat01,bparm,gradb)% 'pdlfg': PDLF with parameter-varying gamma (supply gamwt)% 'pdlfr': PDLF (reduced-order) via state feedback (supply nsf)% others: 'pdlfbr', 'pdlfgr'if ~exist('method') method = 'pdlf';end% 'slow' controllerif ~exist('opt') if exist('maxe') & exist('gest') opt = [maxe; gest(1:length(gest))]; else opt = []; endend% varying gamma weightif ~exist('gamwt') gamwt = [];end% Initial guess?if ~exist('xyinit') xyinit = [];end% Solve LMIs, form controller & closed-loop systemif strcmp(method,'sqlf') [gam1,xmat1,ymat1,xyopt1] = lpvsol(vlpv1,nmeas,nctrl,opt,xyinit); if isempty('gam1') return end [vctrl1,vclp1] = vlpvsyn(vlpv1,nmeas,nctrl,gam1,xmat1,ymat1);else [fparm,gparm,gradf,gradg] = calcbasis(vparm,basisfile); if strcmp(method,'pdlfb') [gam1,xmat1,ymat1,xyopt1] = lpvsolb(vlpv1,nmeas,nctrl,... opt,xyinit,vnu,fparm,gparm,gradf,gradg,xmat01,ymat01,bparm,gradb); elseif strcmp(method,'pdlfbr') [gam1,xmat1,ymat1,xyopt1] = lpvsolbr(vlpv1,nmeas,nctrl,nsf,... opt,xyinit,vnu,fparm,gparm,gradf,gradg,xmat01,ymat01,bparm,gradb); elseif strcmp(method,'pdlfg') [gam1,xmat1,ymat1,xyopt1] = lpvsolg(vlpv1,nmeas,nctrl,gamwt,... opt,xyinit,vnu,fparm,gparm,gradf,gradg); elseif strcmp(method,'pdlfgr') [gam1,xmat1,ymat1,xyopt1] = lpvsolgr(vlpv1,nmeas,nctrl,nsf,gamwt,... opt,xyinit,vnu,fparm,gparm,gradf,gradg); elseif strcmp(method,'pdlfr') [gam1,xmat1,ymat1,xyopt1] = lpvsolr(vlpv1,nmeas,nctrl,nsf,... opt,xyinit,vnu,fparm,gparm,gradf,gradg); else [gam1,xmat1,ymat1,xyopt1] = lpvsol(vlpv1,nmeas,nctrl,... opt,xyinit,vnu,fparm,gparm,gradf,gradg); end if isempty('xyopt1') return end [vctrl1,vclp1] = lpvsyn(vlpv1,nmeas,nctrl,gam1,xmat1,ymat1,fparm,gparm);endvhinf1 = vlpvhinf(vclp1);disp(['LPV gamma = ' num2str(pkvnorm(gam1))]);disp(['Max H-inf norm = ' num2str(pkvnorm(vhinf1))]);clear vlpv1 vctrl1 vclp1clear vWhx vlpvx vparmx vf16x vnux vd0x
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -