cal_time_resp.m
来自「其中提到遺傳學的程式碼與應用提供給次淚相向的研究者參考下載」· M 代码 · 共 84 行
M
84 行
% calculate_time_responses.m
% cal_time_resp.m
% Rise time calculation
I1=find(y>0.05*yss);
if ~isempty(I1)
t1=t(I1(1));
else
t1=10;
end;
I1=find(y>0.95*yss);
if ~isempty(I1)
t2=t(I1(1));
else
t2=80;
end;
rise_time=t2-t1;
% Overshoot
ymax=max(y);
if ymax<=yss
ov_shoot=0;
else
ov_shoot=(ymax-yss)/yss;
end;
ov_shoot;
% Settling time
if ov_shoot>1
set_time=120; % Ocillatory response
else
I1=find(y>=0.98*yss);
if ~isempty(I1)
I1N=length(I1);
I2=I1(1):I1(1)+I1N-1; I2=I2';
I3=I1-I2;
I4=find(I3>0);
if ~isempty(I4)
t1=t(I4(1));
else
t1=t(I1(1));
end;
else
t1=10;
end;
I1=find(y<=1.02*yss);
if ~isempty(I1)
I1N=length(I1);
I2=I1(1):I1(1)+I1N-1; I2=I2';
I3=I1-I2;
I4=find(I3>0);
if ~isempty(I4)
t2=t(I4(1));
else
t2=t(I1(1));
end;
else
t2=80;
end;
set_time=max([t1 t2]);
end;
% Check ranges
if rise_time>1 % rise time is in [0 1] sec.
rise_time=1;
else
if rise_time<0
rise_time=0;
end;
end;
if ov_shoot>=0.2 % Max overshoot is 0.2
ov_shoot=0.2;
else
if ov_shoot<0
ov_shoot=0;
end;
end;
if set_time>2 % Settling time is in [0 2].
set_time=2;
else
if set_time<0
set_time=2;
end;
end;
%[rise_time set_time ov_shoot]
%pause
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?