以时间表格式装载信号
今天我决定重温几年前我讨论过的一个话题:在模拟中加载离散信号。
让我们看看在过去几年中添加了哪些内容,以帮助解决在模拟中加载离散信号时可能遇到的潜在问题。
这个问题
让我们从一个简单的Excel表格开始,其中有两列,第一列表示时间,第二列表示信号值。我让数据和时间完全一致,只是为了让问题更加明显。我们将使用的实际文件包含10,000行,停止时间为10秒。
正如我在书中解释的那样这篇文章,则可以使用从电子表格块来加载此信号。
如果你这样做,我强烈建议你要小心不从Excel加载时间列。尽管Excel中的时间点看起来可能是等距的,但它们的间距可能与Simulink时间步长不同。如果存在差异,可能会导致重复点或缺失点。万博1manbetx
对于上面显示的文件,如果使用“从电子表格”块中的默认设置,则输出是这样的。底部轴上的尖峰表示点丢失或重复。
看见这篇文章有关如何配置From电子表格块以避免此问题的详细信息。
对于今天的示例,我添加了一个额外的复杂性级别:
- 我想通过根级输入块加载信号
- 我希望信号是总线阵列的一部分
- 我希望模型有多个根级别的Inport块,速率不同
使用以下模型,我们希望从Excel表加载信号,并将其分配给输入端口“u1”的元素“a.a1”:
createInputDataset
当您有一个这样的模型,希望通过根级别的Inport块加载信号时,最好从函数开始createInputDataset.
此函数将分析模型并创建骨架数据集对象那适合你的型号。
在这个数据集中,每个信号都是一个MATLAB时间序列一个点位于模拟开始时间,一个点位于停止时间,两者的值均为零。我们现在需要做的就是用真实数据替换这些数据。
时间表
此时,我们可以读取Excel文件并创建一个时间序列,第一列作为时间,第二列作为数据:
然而,我们最终遇到了与上面相同的问题。。。由于Excel中的“时间”列与Simulink采取的步骤不同,我们仍然可以看到一些遗漏的要点:万博1manbetx
幸运的是,可以用一个时间表.而不是xlsread,可以使用阅读时间表它更现代,更强大。
在下面的示例中,我还使用了时间表用于指定具有不同采样时间的其他信号。
模拟模型,我们可以确认没有点丢失或重复:
现在轮到你了
在模拟中加载信号的首选方式是什么?请在下面的评论中告诉我们。
评论
如需留言,请点击在这里登录到您的MathWorks帐户或创建新帐户。