在一定范围的值中绘制传递函数,导致绘制错误输入参数不足

时间:2018-08-04 07:03:42

标签: matlab

我需要查看系统在哪个kc值上稳定和不稳定。

系统具有以下传递函数:

(-2Kc)/(s^4+3s^3+4s^2+3s+(1-2kc) )

enter image description here

计算后,为了使该系统稳定,kc应在以下值范围内:

-1

我正在使用matlab,并添加了以下内容以0.1的步长绘制从-2到1的每个Kc值的传递函数响应:

syms s kc;

t=(-2*kc)/(s^4+3*s^3+4*s^2+3*s+1-2*kc);

kc=-2:0.1:1;

plot(t)

我遇到以下错误:

  

使用绘图数据时出错,数据必须是数字,日期时间,持续时间或数组   可转换为两倍。

     

使用图时出错。输入参数不足。

我尝试进行step功能,但遇到相同的错误。

1 个答案:

答案 0 :(得分:1)

错误消息表明t不是数字数组。 t是一个符号对象; plot函数对符号对象一无所知,并且无法正确处理它们。第二个问题是kc变量定义

kc=-2:0.1:1;

无效,因为它不影响符号对象t的内容。

有一个函数ezplot,用于绘制符号对象。另外,您需要一个循环:

syms s 

for kc=-2:0.1:1;
    t=(-2*kc)/(s^4+3*s^3+4*s^2+3*s+1-2*kc);
    ezplot(t);
    hold on;
end

为了绘制阶跃响应,可以使用控制系统工具箱:

for kc=-2:0.25:1;
    h = tf(-2*kc,[1 3 4 3 1-2*kc]);
    step(h,10);
    hold on;
end