📄 fsvut.m
字号:
function [dv,nv,tv,uv,av,miv,mov,av2,div] = fsvut(w,g,k,h);
%FSVUT Utility function for FSVAN and FSVANF.
%
% [DV,NV,TV,UV,AV,MIV,MOV,AV2,DIV] = FSVUT(W,LI,FI,G,K,H)
% Calculates performance
% and robustness measures for the feedback system shown in section
% FSVAN and FSVANF of the MFD reference manual.
%
% G is an MVFR matrix for the compensated plant, K represents a
% pre-compensator and H is the feedback matrix.
% W is the frequency vector associated with G, K and H.
%
% FSVUT returns 9 column vectors.
% DV: Disturbance transmission from 'd' to the plant outputs.
% NV: Noise transmission from the noise input 'n' to the plant outputs.
% TU: Tracking error = (y-r)/r.
% UV: Command signal transmission to the plant inputs.
% AV: The maximum singular value of an unstructured additive perturbation
% for which closed loop stability can be guaranteed.
% MIV: The maximum singular value of an unstructured input multiplicative
% perturbation for which closed loop stability can be guaranteed.
% MOV: The maximum singular value of an unstructured output multiplicative
% perturbation for which closed loop stability can be guaranteed.
% AV2: As for AV, but a less conservative estimate.
% DIV: Transmission from disturbance at plant input to plant output.
% J-M. Boyle, 8th September 1987. Modified by J.M.Maciejowski, 9 & 17 May 1989.
% Copyright (c) 1987 by GEC Engineering Research Centre & Cambridge Control Ltd.
% MR0028.
[mg,ng] = fsize(w,g);
lw = length(w);
[mk,nk] = fsize(w,k);
[mh,nh] = fsize(w,h);
igmat = eye(mg); % Generate identity matrices
ikmat = eye(mk);
dv = zeros(lw,1); % Set-up output vectors
nv = dv; tv = dv; uv = dv; av = dv; miv = dv; mov = dv;
av2 = dv; div = dv;
indg = 1:mg;
indk = 1:mk;
indh = 1:mh;
for i=1:lw % main loop
% get the individual matrices
gm = g(indg+mg*(i-1),:);
km = k(indk+mk*(i-1),:);
hm = h(indh+mh*(i-1),:);
kh = km*hm; % A few preparatory calculations
gk = gm*km;
gkh = gk*hm; % Calculate GKH.
khg = kh*gm; % Calculate KHG.
% Performance analysis at plant outputs.
dv(i) = 1/(min(svd(igmat + gkh))); % Disturbance analysis.
nv(i) = max(svd((igmat + gkh)\gkh)); % Noise analysis.
tv(i) = max(svd((igmat + gkh)\gk-igmat)); % Tracking accuracy analysis
uv(i) = max(svd((ikmat + khg)\km)); % Command signals seen at plant inputs.
av(i) = (min(svd(igmat + gkh)))/(max(svd(kh))); % Additive perturbations.
miv(i) = min(svd(ikmat+ikmat/khg)); % Calculate [I + inv(KHG)], stability
% margin for plant input multiplicative
% perturbations.
mov(i) = min(svd(igmat+igmat/gkh)); % Calculate [I + inv(GKH)], stability
% margin for plant outputs multiplicative
% perturbations.
av2(i) = 1/max(svd(kh/(igmat+gkh)));
div(i) = max(svd((igmat+gkh)\gm));
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -