【问题标题】:Continuous time system discretization, and matrix exponential, Output truncated连续时间系统离散化,矩阵指数,输出截断
【发布时间】:2016-06-29 07:47:24
【问题描述】:

有一个连续时间系统如下所示:

matlab代码为:

t=0.01;
syms s;
a2=[0 0 -285.7143;0 -0.4533 9.0662;5.2650 -5.2131 -42.5958];
b2=[571.4286;0;82.5714];
c2=[1 0 0];
A2=expm(a2*t);
B2=(int(expm(a2*s),0,t)*b1);

但是,当我计算 B1 时,计算机显示“输出被截断”。

请帮帮我。

非常感谢。

【问题讨论】:

  • 仅供参考,b1 未在您的代码中定义。

标签: matlab controls discretization


【解决方案1】:

我认为没有必要对矩阵值函数的积分使用符号数学。相反,您可以将integral'ArrayValued' option 一起使用:

t = 0.01;
a2 = [0 0 -285.7143;
      0 -0.4533 9.0662;
      5.2650 -5.2131 -42.5958];
integral(@(s)expm(a2*s),0,t,'ArrayValued',true)

这要快得多,并返回与syms s; double(int(expm(a2*s),s,0,t)) 非常相似的结果(由于数值错误而忽略了微小的虚部)。另见this question

【讨论】:

    猜你喜欢
    • 2021-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多