【问题标题】:FOR iterator block in Simulink and model's inputSimulink 中的 FOR 迭代器模块和模型的输入
【发布时间】:2019-02-07 21:55:17
【问题描述】:

您好,我正在从 simulink 模型构建一个 exe,为此我通过 .mat 文件将输入传递给它。

我的问题是,由于在我的模型中存在一个“for each”块,我如何将数据存储在 .mat 文件中?通常(没有 for each 块)我会将输入作为常数向量存储在工作区中(参见 simulink 模型的上半部分),它将自动处理如何在仿真期间传递数据。但在我的情况下,由于我想导出为 .exe 并以编程方式传递输入,我需要将输入作为 .mat 文件,并且“for each”块的存在搞砸了构建向量时间(因为不清楚如何将时间向量与 .mat 文件中的数据向量结合起来,因为在给定的仿真时间内,simulink 需要哪些数据并不清楚。

感谢您的帮助!

【问题讨论】:

  • 请创建一个简单的模型,具体展示您尝试设置模块的方式,并上传模型的图像。根据您的描述,很难确切知道您在做什么。
  • 你好@PhilGoddard,我刚刚用我的模型的简化图片编辑了帖子。在上部是我所拥有的(有效)。在底部,我有我必须构建的模型(基本上我用 From File .mat 替换了常量输入),因为我想将 .slx 导出到 .exe 以优化计算时间并且输入是可管理的通过 .mat 文件更容易。

标签: matlab for-loop input simulation simulink


【解决方案1】:

目前还不清楚您遇到的具体问题是什么。

在你的上图中,当你有一个变量时,模型将运行

>> input = 1:3;

如果您打开Display->Signals & Ports->Signal Dimensions,您会看到来自Constant 块的信号的维度为3

对于下图,在 MATLAB 中创建一个变量,因为它将在 From File 块中使用,因此必须遵守该块所需的规范,这意味着第一行是时间向量,所以

>> t = [0 10]
t =
     0    10
>> u = [1 1;2 2;3 3]
u =
     1     1
     2     2
     3     3
>> tu = [t;u]
tu =
     0    10
     1     1
     2     2
     3     3

然后将此变量保存到您的文件中,

>> save input tu

现在来自From File 块的信号也将是维度3

更改tu 的值以适应您的具体问题。

【讨论】:

  • 感谢您的回答!我也在考虑用快速模拟目标编译它。获得 .exe 文件后,有什么方法可以指定采样时间?因为可以修改输入和参数,但我不确定采样时间。
  • 编译后无法更改模型的采样时间。您可以通过 mat 文件更改您输入的数据的t
  • 但是,如果我的积分器有问题(例如步长不够紧),我不会简单地通过定义具有较短步长的 t 来解决问题,因为在编译之前定义了采样时间模型进exe不会影响什么吧?
  • 在模型中定义并用它编译的模型采样时间不能更改。这样做会产生很多后果,包括,如果您的数据发生变化并影响集成商的性能,那么您就无法更改它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-22
相关资源
最近更新 更多