我想编写一个函数,该函数将基于系统的输出来检查系统是否稳定。输出由Simulink生成。功能调整参数,并检查每对参数的稳定性。这个想法是,如果下一个局部最大值大于前一个函数,则不稳定。如果我在一个示例中使用它,我的代码将起作用,但是在这种情况下,isStable
的值始终为1。
for col = 1:length(x)
for row = 1:length(y)
load_system('system.mdl');
set_param('system/PID Controller', 'P', sprintf('%f', (row-1)*0.01));
set_param('system/PID Controller', 'I', sprintf('%f', (col-1)*0.001));
sim('system.mdl');
isStable = 1;
current = 0;
for i = 1 : size(tout)
current = [current,getdatasamples(simout2, [i])];
end
pks = findpeaks(current)
for i = 1 : size(pks)-1
if pks(i+1)>pks(i)
isStable = 0;
end
end
p(col, row) = isStable;
disp(isStable);
end
end