我通常使用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,我平均更新了变量。
答案 0 :(得分:1)
在您展示的Simulink模型中,elseif
部分永远不会执行,因为:
u1>0
,则不会检查任何其他条件,因此它将始终为所有0.01
返回u1>0
。 u1<=0
时,将检查所有条件,但不检查所有条件
会满意的。 (u1
可能永远不会小于零,因为u1
是时间)。 这种行为在每种编程语言中都是相同的。
修正If-elseif
语句:
您需要在If
block:
在If expression (e.g. u1 ~= 0)
下,写下:
u1>0 & u1<=500
在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
由于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
部分的输出。