首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何模拟scilab程序(而不是xcos)中的扰动

如何模拟scilab程序(而不是xcos)中的扰动
EN

Stack Overflow用户
提问于 2021-06-17 20:41:20
回答 1查看 110关注 0票数 0

你好吗?。

我需要用scilab来模拟控制系统中的扰动,即csim函数用来模拟一个系统的响应,使用阶跃、脉冲、斜坡或任何其他输入,但是,我需要输入一个扰动,例如t= 0.5s来观察系统的行为。

这又给我带来了另一个问题,因为我不知道如何使csim或syslin确认两个不同的输入,或者简单地定义两个系统,一个是参考输入,另一个是干扰入口和和。

提前谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-18 07:25:16

假设你有以下线性时不变系统(A,B,C)

代码语言:javascript
复制
x'=A*x+B1*v+B2*d
y=C*x

用B=B1,B2,其中v为控制/输入,d为扰动。如果你想要模拟一个阶跃响应和一个扰动,你必须定义你自己的整体输入v;d,并决定什么时候应用该扰动。下面是一个示例:

代码语言:javascript
复制
function ud = step(t)
    ud = [1;0];
endfunction

function ud = input(t)
    ud = zeros(t);
    ud(1,:) = 1;
    s = abs(t-0.5);
    // 0.2 is the half-width of disturbance
    ud(2,:) = -0.1*(1-s/0.2).*(s<0.2)
endfunction

A = [-2 1;
      1 -2];
B1 = [1;0];
B2 = [0;4];
C = [0 1];

sl = syslin('c',A,[B1 B2],C);
t = linspace(0,5,1000);

x = csim(step,t,sl)
xd = csim(input,t,sl)

clf
plot(t,x,t,xd,t,input(t)(2,:))
legend('step','step and disturbance','disturbance',2)

我在这里打了两个csim电话,一个用于通常的步骤响应,另一个用于被扰动的步骤响应。但是,我警告您注意csim使用的ode求解器:不连续的输入很容易被忽略,这就是为什么我在这里应用了帽子形状的扰动。扰动输入的代码设计为允许矢量时间输入,以便于绘制扰动图。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68026297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档