查找表的数据在下面的图像中。假设第一列是我的断点1,第一行是断点2,其他单元格是我的表数据。
假设我想传递以下x,y
值w.r.t,并且我希望模型只计算其中的几个值(例如,我只想计算x,y
的4-7值)
在传递上述x,y值后,我的输出文件是
我想传递每个时间步骤的数据点,而不是所有时间步骤的所有数据点。
如果我们查看子系统的输出文件,结果将被添加到前面的数据点。
实际上,每次只传递一个数据点,结果应该添加到以前数据点的值中。
发布于 2016-02-09 12:53:22
我解决了你的问题,在这里我的方法是:
首先,让我们看看如何只计算特定区间的和。我建议使用启用子系统块。只有当它被信号激活时,它才能工作。为你的时间间隔发出特定的信号是很容易的。有很多种方法。例如,您可以这样做:
1
和0.5
是时间间隔的限制。现在,只有在我们这个时候,子系统将工作,并将总结您的数据。子系统:
我查了一下你的数据
xy_data =
1 650 50
2 675 70
3 700 90
4 725 110
5 750 130
6 775 150
7 800 170
8 825 190
9 850 210
10 875 230
查阅表中的数据:
我得到了结果228
。(您可以在Display2 into 上看到结果)。我一步一步地检查了它,看起来它是正确的(它非常接近表值!)
要在每个时间步骤中获取z
的值,只需在查找表之后添加to workspace
块,如下所示:
现在,如果你计算出4-5秒的和,你就会得到我的结果228
(实际上是227.9903,它只是四舍五入)。为什么我把Unit Delay
块放在这里:计算和是有必要的--为了得到和,您需要从前一步取当前值并加到SUM。要从前一步获得信号值,必须使用“单位延迟”。
关于时间表的第二个问题。如果您不想手动更改它,您可以通过一些MATLAB命令从您的工作空间。例如,您可以编写脚本,并且只更改其中的timestep值。
mdl = 'NameOfSimulinkModel' %your model name
open_system(mdl); % open it in visible mode
configSet = getActiveConfigSet(mdl) % load all parameters of model
s = configSet.getComponent('Solver') % get handle at Solver parameters
s.getProp('FixedStep') % get current step value
s.setProp('FixedStep', '0.1') % set needed value
sim(mdl) % start simulation in Simulink
因此,您可以看到您的数据,计算所需的时间步骤值,从命令窗口设置它并开始模拟。
希望能帮上忙!下面是我的模型的最后一个版本:这里。
https://stackoverflow.com/questions/35286511
复制相似问题