对于第一个传递函数方块,有两种方式可以实现,第一种用simulink-user-defined functions 中的matlab function模块,双击该模块可以对该模块进行编程。
第二种,用simulink-Loodup Tables-- 1-D Lookup Table模块,设置输入输出查表值。in=input('请输入1或2');
if in==1
num=[10 4];
den=[1 4 4 0];
y=zichengxu(num,den);
else if in==2
num=[10 4];
den=[1 4 4];
y=zichengxu(num,den);
else
disp('输入错误,请重新输入');
end
end
function y1=zichengxu(num,den)
y1=step(num,den);
plot(y1)
end
clear all;clc;
t=0:0.01:5;
for K=50:-1:2
for a=2:-0.05:0.05
num=[K 2*K*a K*a^2];
den=[1 6 5+K 2*K*a K*a^2];
y=step(num,den,t);
m=max(y);
s=501;
sys=tf(num,den);
ys=dcgain(sys);
while y(s)>ys*0.98 & y(s)<ys*1.02;
s=s-1;
end
ts=(s-1)*0.01;
if m<ys*1.1 & m>ys*1.02 & ts<3.0
break;
end
end
if m<1.10 & m>1.02 & ts<3.0
break;
end
end
plot(t,y)
grid
title('Unit-Step Response')
xlabel('t sec')
ylabel('Output')
solution=[K;a;m;ts]t=0:0.01:10;
u=0.5*t.^2;
sys=tf([1],[1 3 5]);
[y,t]=lsim(sys,u,t);
plot(t,y,'--',t,u,'-')
grid
title('Plot of Solution Curve for Differential Equation')
xlabel('t Sec')
ylabel('Output y(t)')