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]);
总之,函数的参数和返回值一定要清楚