⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vlpvmucd.m

📁 线性时变系统控制器设计的工具包
💻 M
字号:
function [vdnew,vbnd,vmupk] = vlpvmucd(vlpv,blk,w,vdold)% [vdnew,vbnd,vmupk] = vlpvmucd(vlpv,blk,w,vdold)% [vdnew,vbnd,vmupk] = vlpvmucd(vlpv,blk,w)% mu upper bound analysis with constant D-scales at each grid point.% This function calls lmi1cd.m,tinitial.m,blk2strc.m.% INPUTS: % vlpv		varying array of systems% blk		total perturbation block structure% w			frequency grid % vdold		varying array of old scalings (omit for 1st iteration)% OUTPUTS: % vdnew		varying array of new scalings% vbnd		varying array of frequency-dependent mu upper bounds: % vmupk		peak (vs. w) values of vbnd% Created: 5/24/96 by Lawton H. Lee% Last modified: 7/11/96 by Lawton H. Lee% NOTE: The performance-block scales (the last block) are normalized to% identity.  If the system is not square, vdnew's identity blocks are% truncated to fit min{# inputs, # outputs}.  (See also mdscl.m)if nargin < 3 disp('[vdnew,vbnd,vmupk] = vlpvmucd(vlpv,blk,w,vdold)'); returnendtic[mtyp,no,ni,ns] = minfo(vlpv);if mtyp ~= 'vary' vlpv = vpck(vlpv,1);end[mtyp,no,ni,ns] = minfo(xtracti(vlpv,1,1));niomin = min([ni no]);vindx = getiv(vlpv);if ~exist('vdold') vdold = [];endif isempty(vdold) vdold = eye(min([no ni]));endvdnew = [];vbnd = [];vmupk = [];% square down the block structurefor k = 1:size(blk,1) [maxdim,maxi] = max(blk(k,:)); [mindim,mini] = min(blk(k,:)); if maxdim > mindim & mindim > 0  blk(k,mini) = blk(k,maxi); endendfor kk = 1:length(vindx) disp(['Point ' int2str(kk) ' of ' int2str(length(vindx))]); % Add dummy inputs or outputs if the system is not square lpvsys = xtracti(vlpv,kk,1); if ni < no  lpvsys = sbs(lpvsys,zeros(no,no-ni)); elseif no < ni  lpvsys = abv(lpvsys,zeros(ni-no,ni)); end% [Dc,Dw,ubnd,ubnd_pk] = lmi1b(lpvsys,w,blk2strc(blk),[0 0],[0 0 0 0 1]); [Dc,ubnd,ubnd_pk] = lmi1cd(lpvsys,w,blk2strc(blk),[0 0 0 0 1]); Dc = Dc(1:niomin,1:niomin) / Dc(niomin,niomin); vbnd = sbs(vbnd,ubnd); vmupk = [vmupk; ubnd_pk]; dold = xtracti(vdold,kk,1); vdnew = [vdnew; mmult(Dc,dold)];endvmupk = vpck(vmupk,vindx);vdnew = vpck(vdnew,vindx);toc

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -