matlab 中带迟延环节的开环传递函数怎么求他的闭环函数?

num=[1];
den=conv([1 1],[4 1]);
tao=0.4;
Gs=tf(num,den,'inputdelay',tao)

Transfer function:
1
exp(-0.4*s) * ---------------
4 s^2 + 5 s + 1

>> Kp=15;Ki=1;Kd=8;
Ds=tf([Kd Kp Ki],[1 0])

Transfer function:
8 s^2 + 15 s + 1
----------------
s
sys=feedback(ss(Ds*Gs),1);
step(sys)
??? Error using ==> ss.feedback
FEEDBACK cannot handle time delays.

结果出现这个问题,feedback没法处理迟延环节,请问应该怎么做才能得到闭环传函?
题目如下图所示

这个当系统有纯滞后环节以后,不能直接求它的反馈,必须在状态空间中去求,至于状态空间的具体解释属于自控2的内容。所以求其传递函数时要再之后环节前面加上ss(),你的程序是对的,我已经运行出来了,

num=[1];

den=conv([1 1],[4 1]);

tao=0.4;

Gs=tf(num,den,'inputdelay',tao)

  Kp=15;Ki=1;Kd=8;

Ds=tf([Kd Kp Ki],[1 0])

 sys=feedback(ss(Ds*Gs),1);

 step(sys)

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-25
迟延环节可以用 pade 近似来求解 最后转换成线性系统
[num den]=pade=[0.4,4]; % 表示四阶近似
sys_delay=tf(num,den); % 迟延线性近似系统
用 sys_delay 替代你的迟延即可
第2个回答  2012-11-28
pade命令,[num,den]=pade(T,n)
第3个回答  2012-05-13
为什么不用simulink?追问

老师要求用M程序啊,simulink我会的

追答

额,那我也不晓得了,抱歉啊

本回答被提问者采纳
相似回答