matlab根轨迹常用函数

function [sys,x0,str,ts]=csfunc(t,x,u,flag)
A=[-0.09 -0.01
1 0 ];
B=[ 1 -7
0 -2];
C=[ 0 2
1 -5];
D=[ -3 0
1 0 ];
switch flag,
case 0,
[sys,x0,str,ts]=mdlInitializeSize(A,B,C,D);

case 1,
sys=mdlDerivatives(t,x,u,A,B,C,D);
case 3,
sys=mdlOutputs(t,x,u,A,B,C,D);
case {2,4,9},
sys=[];
otherwise
error(['Unhandled flag=',num2str(flag)]);
end
function [sys,x0,str,ts]=mdlInitializeSizes(A,B,C,D)
sizes=simsizes;
sizes.NumContStates=2;
sizes.NumdiscStates=2;
sizes.NumOutputs=2;
sizes.NumIntputs=2;
sizes.Dirfeedthrough=1;
sizes.NumSampleTimes=1;
sys=simsize(sizes);
x0=zeros(2,1);
str=[];
ts=[0 0];
function sys=mdlDerivatives(t,x,u,A,B,C,D)
sys=A*x+B*u;
function sys=mdlOutputs(t,x,u,A,B,C,D)
sys=C*x+D*u;
















num=50;
den=[2.5e-8 1/28500 1];
sys=tf(num,den);
margin(sys),grid
sisotool
num1=50;num2=[0.08 200];
den1=[(2000*pi)^(-2) (19000*pi)^(-1) 1];
den2=[1 0];
num=conv(num1,num2);
den=conv(den1,den2);
sys=tf(num,den);
margin(sys),grid



num1=12.50;num2=[0.00106237 6.35];
den1=[2.5e-8 5.556e-6 1];
den2=[1 0];
num=conv(num1,num2);
den=conv(den1,den2);
sys=tf(num,den);
margin(sys),grid


num1=12.50;num3=[1 1/2000/pi];num4=[1 1000*pi];num2=0.08419*conv(num3,num4);
den1=[2.5e-8 5.556e-6 1];
den2=[1/40000/pi 1 0];
num=conv(num1,num2);
den=conv(den1,den2);

sys=tf(num,den);
margin(sys),grid




>> num1=12.50;num3=[1/2000/pi 1];num4=[1 1000*pi];num2=0.3714*conv(num3,num4);
den1=[2.5e-8 5.556e-6 1];
den2=[1/20000/pi 1 0];
num=conv(num1,num2);
den=conv(den1,den2);

sys=tf(num,den);
margin(sys),grid


>> num1=12.50;num3=[1/2000/pi 1];num4=[1 1000*pi];num2=0.3714*conv(num3,num4);
den1=[2.5e-8 5.556e-6 1];
den2=[1/20000/pi 1 0];
num=conv(num1,num2);
den=conv(den1,den2);

sys=tf(num,den);
t=1e-5;sysd=c2d(sys,t)

Transfer function:
0.07855 z^3 - 0.08414 z^2 - 0.05397 z + 0.05983
-----------------------------------------------
z^4 - 3.527 z^3 + 4.589 z^2 - 2.594 z + 0.5323

Sampling time: 1e-005


[ki,kp]=solve('1*ki-2000*pi*kp=0','12.5^2*((400*pi*kp)^2+ki^2)-(400*pi)^2*((1-2.5e-8*(400*pi)^2)^2+(5.556e-6*400*pi)^2)=0')

solve('a*x^2 +b*x+c=0')

>> zpk(sysd)


z=tf('z',-1);
g=(z-1)*8.327e-008*(z+3.729)*(z+0.2679)/(z*(z-1)*(z^2-1.994z+0.9978));
rlocus(g),grid;

z=tf('z',-1);
g=(z+0.264)/((z-1)*(z-0.768));
rlocus(g), grid;


>> num1=0.512*391/0.484/0.764;num3=[1/2000/pi 1];num4=[1 1000*pi];num2=0.3714*conv(num3,num4);
den1=[1/2/pi/1.581 1];


sys=tf(num1,den1);
margin(sys),grid

相关文档
最新文档