simulink仿真不确定性模型,主要学习第二个程序。
mdl = "rctUncertainModel";
open_system(mdl)
m = 3;
c = ureal('c',1,'Percentage',20);
k = ureal('k',2,'Percentage',30);
usys = tf(1,[m c k])
ublk = strcat(mdl,"/Uncertain State Space"); % 水平串联字符串
set_param(ublk,"USystem","usys"); % 为mdl 设置不确定系统
sim(mdl); % 标称模型阶跃响应
%
samps = struct('c',1.2,'k',1.7); % 某个不确定参数
set_param(ublk,"UValue","samps"); % 设置不确定参数
sim(mdl);
%
uvars = ufind(mdl); % 不确定参数结构体
set_param(ublk,"UValue","usample(uvars)"); % 设置不确定参数随机采样
sim(mdl);
for i=1:5 % 随机绘制不确定参数的响应
sim(mdl);
end
hinf_1_30_2.m
mdl = "rctMultiUncertainModel";
open_system(mdl)
input_unc = ultidyn('input_unc',[1 1]);
wt = makeweight(0.25,130,2.5);
unc_sys = ss(ureal('a',-1,'Range',[-2 -.5]),1,5,0);
vals = []; % 默认标称模型
sim(mdl);
% 随机不确定值运行
uvars = ufind(mdl)
vals = usample(uvars)
sim(mdl)
for i=1:5
vals = usample(uvars);
sim(mdl);
end
参数先设置好:
hinf_1_31_2.m
https://ww2.mathworks.cn/help/robust/ug/vary-uncertainty-values-across-multiple-uncertain-state-space-blocks.html