人在仿真软件万博1manbetx

万博1manbetxSimulink &基于模型的设计

以时间表格式装载信号

今天我决定重温几年前我讨论过的一个话题:在模拟中加载离散信号。

让我们看看在过去几年中添加了哪些内容,以帮助解决在模拟中加载离散信号时可能遇到的潜在问题。

这个问题

让我们从一个简单的Excel表格开始,其中有两列,第一列表示时间,第二列表示信号值。我让数据和时间完全一致,只是为了让问题更加明显。我们将使用的实际文件包含10,000行,停止时间为10秒。

Excel表格

正如我在书中解释的那样这篇文章,则可以使用从电子表格块来加载此信号。

如果你这样做,我强烈建议你要小心从Excel加载时间列。尽管Excel中的时间点看起来可能是等距的,但它们的间距可能与Simulink时间步长不同。如果存在差异,可能会导致重复点或缺失点。万博1manbetx

对于上面显示的文件,如果使用“从电子表格”块中的默认设置,则输出是这样的。底部轴上的尖峰表示点丢失或重复。

Excel表格

看见这篇文章有关如何配置From电子表格块以避免此问题的详细信息。

对于今天的示例,我添加了一个额外的复杂性级别:

  • 我想通过根级输入块加载信号
  • 我希望信号是总线阵列的一部分
  • 我希望模型有多个根级别的Inport块,速率不同

使用以下模型,我们希望从Excel表加载信号,并将其分配给输入端口“u1”的元素“a.a1”:

示例模型

createInputDataset

当您有一个这样的模型,希望通过根级别的Inport块加载信号时,最好从函数开始createInputDataset

此函数将分析模型并创建骨架数据集对象那适合你的型号。

创建输入数据集

在这个数据集中,每个信号都是一个MATLAB时间序列一个点位于模拟开始时间,一个点位于停止时间,两者的值均为零。我们现在需要做的就是用真实数据替换这些数据。

时间表

此时,我们可以读取Excel文件并创建一个时间序列,第一列作为时间,第二列作为数据:

创建时间序列

然而,我们最终遇到了与上面相同的问题。。。由于Excel中的“时间”列与Simulink采取的步骤不同,我们仍然可以看到一些遗漏的要点:万博1manbetx

错误的结果

幸运的是,可以用一个时间表.而不是xlsread,可以使用阅读时间表它更现代,更强大。

在下面的示例中,我还使用了时间表用于指定具有不同采样时间的其他信号。

时间表

模拟模型,我们可以确认没有点丢失或重复:

好成绩

现在轮到你了

在模拟中加载信号的首选方式是什么?请在下面的评论中告诉我们。

|

评论

如需留言,请点击在这里登录到您的MathWorks帐户或创建新帐户。