我试图绘制一个控制系统的响应,它有两个单位步骤 - 一个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)的系统。这个系统只有一个输入,我只想用叠加原理将它们加在一起。
当我尝试将两个向量加在一起时,我得到“向量必须是相同的长度。”
答案 0 :(得分:1)
您要做的不是阶跃响应。阶跃响应测量系统跟踪常量输入的能力,您提出的不是常量输入。
要执行您想要的操作,请查看lsim function和gensig 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;
)