关于控制系统和matlab

emmmmm,最近做css(computer control system)经常用到matlab但是各种不熟练,暂且把一些常用的命令记下来。

sys = tf(num, den)       %写传递函数

dsys = tf(num, den, 'T')  %脉冲传递函数,T为采样周期

sys = zpk(zeros, poles, k)   %零点,极点,增益系数k形式的传递函数

dsys = zpk(zeros, poles, k, 'T')  %多了采样周期 

sys1 = zpk(tf(den, num))    sys1 = tf(zpk(zero, pole, gain))   %两种形式互相转换

[n, d] = c2dm(num, den, T, 'zoh')   %传递函数离散化

rlocus(sys); grid on;   %连续/离散根轨迹 如果加上grid on会有等阻尼线,比较方便设计

line([0 5], [0 1.5]);line(x,y); %可以在根轨迹图上加等阻尼线和等角度线

[K, pole] = rlocfind(sys)  %在图上标出想要的根并得到传递函数的参数

if we know the state space representation of control system, how do I get the transfer function?

sys = ss(A,B,C,D);
func = tf(sys);

---------------------------------分割线------------------------------------------------------------------------------------------

做大作业知道的命令

要求:画离散传递函数的波特图

T1 = 0.1; 
Lw=20; w=0:0.5:Lw;

num = [4 0]; den = [1 -0.67];
zplane([1 0], [1 -0.67]); % 画零点极点图
num2 = [2 0]; den2 = [7 -5];

[dmag,dpha]=dbode(num,den,T1,w); % 画离散域波特图
[dmag2, dpha2] = dbode(num2, den2, T1, w);
ymax=max(dmag);
plot(w,dmag,'b','LineWidth',0.5); %画幅频图   plot(w, dpha, 'r', 'LineWidth', 0.5);
hold on;  %hold on 可以让多条曲线画在一张坐标轴上
plot(w,dmag2,'LineWidth', 0.5);
grid on; axis([0,Lw,0,1.01*ymax]);

总之,函数的参数和返回值一定要清楚

猜你喜欢

转载自blog.csdn.net/wooooooc/article/details/80071560