首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在simulink中建模一个查找表,它应该通过Quresw.r.t时间,并且只能在特定的时间周期内得到结果。

在simulink中建模一个查找表,它应该通过Quresw.r.t时间,并且只能在特定的时间周期内得到结果。
EN

Stack Overflow用户
提问于 2016-02-09 07:49:15
回答 1查看 2.8K关注 0票数 1

查找表的数据在下面的图像中。假设第一列是我的断点1,第一行是断点2,其他单元格是我的表数据。

假设我想传递以下x,y值w.r.t,并且我希望模型只计算其中的几个值(例如,我只想计算x,y的4-7值)

在传递上述x,y值后,我的输出文件是

我想传递每个时间步骤的数据点,而不是所有时间步骤的所有数据点。

如果我们查看子系统的输出文件,结果将被添加到前面的数据点。

实际上,每次只传递一个数据点,结果应该添加到以前数据点的值中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-09 12:53:22

我解决了你的问题,在这里我的方法是:

首先,让我们看看如何只计算特定区间的和。我建议使用启用子系统块。只有当它被信号激活时,它才能工作。为你的时间间隔发出特定的信号是很容易的。有很多种方法。例如,您可以这样做:

10.5是时间间隔的限制。现在,只有在我们这个时候,子系统将工作,并将总结您的数据。子系统:

我查了一下你的数据

代码语言:javascript
运行
复制
 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值。

代码语言:javascript
运行
复制
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

因此,您可以看到您的数据,计算所需的时间步骤值,从命令窗口设置它并开始模拟。

希望能帮上忙!下面是我的模型的最后一个版本:这里

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

https://stackoverflow.com/questions/35286511

复制
相关文章

相似问题

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