已知某系统的差分方程模型为y(k+2)+y(k+1)+0.16y(k)=u(k-1)+2u(k-2),怎样将其输入到MATLAB工作空间。
1、依旧用 tf()tf()tf() 函数,只不过我们需要指明采样周期 TTT。在这里,我们的 ZZZ 变换结果是基于 T=1sT=1sT=1s 计算的:
num = [1,2];
den = [1,1,0.16];
H = tf(num,den,'Ts',1)
2、feedback函数不支持符号运算,只能是针对确定参数模型,因此我们有必要编写一个小程序段方便化简:
function U = feedbacksym_1(G1,G2,key)
if nargin==2;key = -1;end
U = 1/(sym(1)-key*G1*G2);
end
3、nargin是输入函数变量个数:
syms s J Kp Ki;
G = (s+1)/(J*s^2+2*s+5);
Gc = (Kp*s+Ki)/s;
simplify(feedbacksym_1(G*Gc,1))
扩展资料
其实就是将建立好的 tftftf 模型使用 ss(G)ss(G)ss(G) 的方法就能转换成状态空间,只不过需要明确的是:传递函数到状态空间的表示不唯一,而状态空间到传递函数得表示唯一,这也应证了状态变量选择的多样性。连续传递函数采样至离散传递函数;
这里千万不要把G化简然后用 tf[num,den,′Ts′,0.1]tf[num,den,'Ts',0.1]tf[num,den, ′Ts ′ ,0.1] 这种做法,那是针对的已知离散传递函数模型的搭建,这里已知的是连续传递函数模型,我们不能说对它采样后离散传递函数就是把s换成z,因此需要使用 c2d函数。