【问题标题】:How do sum two step responses of the same system in MATLAB?如何在 MATLAB 中对同一系统的两个阶跃响应求和?
【发布时间】:2011-05-03 01:09:01
【问题描述】:

我正在尝试绘制具有两个单位步长的控制系统的响应 - 一个是 t=0,一个是 t=0.3

这是我正在使用的代码:

% Set up the transfer function
numer = [K*K_m*r];
denom = [(L_m*J_e) (L_m*b_m+R_m*J_e) (K_b*K_m+R_m*b_m) K*K_m*r];
transfun = tf(numer, denom);

% Apply a step function at t=0
[y,T] = step(transfun, 0:0.001:0.5);

% Second step function at t=0.3
[y_b, T_b] = step(transfun, 0.3:0.001:0.5);

% How to add the above two outputs together?
plot( ???? )

我搜索了谷歌,但我能找到的唯一解决方案是针对具有多输入 (MIMO) 的系统。这个系统只有一个输入,我只是想用叠加原理把它们加在一起。

当我尝试将两个向量相加时,我得到“向量必须具有相同的长度。”

【问题讨论】:

    标签: matlab controls


    【解决方案1】:

    您尝试做的不是阶跃响应。阶跃响应衡量系统跟踪恒定输入的能力,而您提出的不是恒定输入。

    如需,请查看lsim functiongensig function

    (旁注:至于为什么你不能添加你的向量,第一个从 0 到 0.5 以 0.001 为增量,另一个从 0.3 到 0.5 以 0.001 为增量。当然它们会有所不同长度!如果您真的打算将它们加在一起,请执行以下操作:

    [y_b, T_b] = step(transfun, 0:0.001:0.5);
    y_b(T_b<0.3) = 0;
    

    我目前无法对此进行测试,但如果这不起作用,请尝试:

    y_b(0:0.001:0.3) = 0;
    

    )

    【讨论】:

    • 嗯,你是对的,谢谢。我没有正确理解这个问题——我真正需要做的是添加一个步进输入,以及在系统的不同点(增益之后)添加第二个步进输入来模拟稳态误差。我最终在 Simulink 中创建了一个模型。
    • 好电话。我想建议 Simulink,但我觉得它可能离你的问题有点太远了。 Simulink 绝对是一种更好的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-30
    • 2014-10-12
    • 1970-01-01
    相关资源
    最近更新 更多