使用“来自工作区”块的数据时,Simulink模型中的结果不正确

时间:2013-03-29 07:18:01

标签: matlab input simulink workspace

我在使用导入我的Simulink块工作空间的数据时遇到问题。

我的案例:

我做了一个简单的框图来模拟结果,然后将这个方法实现到实际的Simulink块。我利用“从工作空间”块读取数据和范围来观察输出。这些是设置:

t=0:22/565:22
a.time=t
a.signals.values=ddata   %ddata contains [565x1] datas
a.signals.dimensions=1;

我意识到范围内的结果与数据不匹配。

我发现在这个网站(http://blogs.mathworks.com/seth/2012/02/09/using-discrete-data-as-an-input-to-your-simulink-model/)上,Simulink求解器采取的步骤与输入时间向量中指定的步骤不同。

尝试解决:

我将时间向量设置为零,但是出现错误。

a.time=[];

错误:“为'test / From Workspace'指定的连续采样时间无效。当工作空间的输入是没有时间数据的结构时,不允许连续采样时间。要消除此错误,请选择离散采样时间或更改输入数据包括时间数据。“

问题:

  1. 如何在不使用时间向量的情况下解决此错误?

  2. 读取Simulink块中每个时间步的一行而不是整个数据列表的最佳方法是什么?

  3. 如果有人能为我的案例提供见解/解决方案/替代方法,我深表感谢。

2 个答案:

答案 0 :(得分:0)

数据中的时间向量与模拟模型时Simulink将使用的时间步骤无关。 将您的输入时间/数据视为一个查找表,Simulink将使用该查找表为每个时间步(它决定采用)获取输入值(使用插值)。

要强制Simulink在给定时间点采取步骤,您需要更改“配置参数”对话框的“求解器”页面上的参数。 听起来你想要使用步长为22/565的固定步长求解器。

答案 1 :(得分:0)

也许您可以使用1-D Lookup Table block吗?您将时间向量用作断点,将ddata用作表数据。 如果Simulink在时间向量中的点之间有一个时间点,则可以使用线性/三次插值或使用最近的点。这样可以避免将Simulink强制设置为特定时间点。

enter image description here

相关问题