变量随时间的增量增量增加

时间:2017-06-12 18:19:55

标签: matlab simulink

我通常使用Python编程,但对于作业,我使用的是Simulink。我想知道为什么上面的'use strict'; var defs = require('./defs'); var constants = defs.constants; var frame = require('./frame'); var HEARTBEAT = frame.HEARTBEAT; var Mux = require('./mux').Mux; 阶梯不会随着时间的推移而增加变量[IP3]的增量。我认为它应该做的是返回0.01直到t = 500,然后0.03直到t = 1000,然后是0.1到1500,1到2000,从那时起10。对于旧图像的道歉btw,我平均更新了变量。

Incremental increase of variable over time

1 个答案:

答案 0 :(得分:1)

在您展示的Simulink模型中,elseif部分永远不会执行,因为:

  • 如果满足u1>0,则不会检查任何其他条件,因此它将始终为所有0.01返回u1>0
  • u1<=0时,将检查所有条件,但不检查所有条件 会满意的。 (u1可能永远不会小于零,因为u1是时间)。

这种行为在每种编程语言中都是相同的。

修正If-elseif语句:

您需要在If block

中添加此内容
  1. If expression (e.g. u1 ~= 0)下,写下:

    u1>0 & u1<=500
    
  2. Elseif expressions (comma-separated list, e.g. u2 ~= 0, u3(2) < u2):下,写下:

    u1>500 & u1<=1000, u1>1000 & u1<=1500, u1>1500 & u1<=2000, u1>2000
    
  3. 由于u1在您的情况下是时间不能为负,您可能还想使用else部分。因此,您可以执行此操作而不是最后一步:

    Elseif expressions (comma-separated list, e.g. u2 ~= 0, u3(2) < u2):下,写下:

    u1>500 & u1<=1000, u1>1000 & u1<=1500, u1>1500 & u1<=2000
    

    并连接之前与else输出相关联的u1>2000部分的输出。