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

Matlab 使用数据“来自工作区”块时Simulink模型中的结果不正确,matlab,input,simulink,workspace,Matlab,Input,Simulink,Workspace,我在为Simulink块使用导入工作区的数据时遇到问题 我的情况是: 在将此方法应用于实际Simulink块之前,我做了一个简单的框图来模拟结果。我使用一个“fromworkspace”块来读取数据,并使用一个范围来观察输出。以下是设置: t=0:22/565:22 a.time=t a.signals.values=ddata %ddata contains [565x1] datas a.signals.dimensions=1; 我意识到范围内的结果与数据不匹配 我发现在这个网站上,

我在为Simulink块使用导入工作区的数据时遇到问题

我的情况是:

在将此方法应用于实际Simulink块之前,我做了一个简单的框图来模拟结果。我使用一个“fromworkspace”块来读取数据,并使用一个范围来观察输出。以下是设置:

t=0:22/565:22
a.time=t
a.signals.values=ddata   %ddata contains [565x1] datas
a.signals.dimensions=1;
我意识到范围内的结果与数据不匹配

我发现在这个网站上,Simulink解算器采取的步骤与输入时间向量中指定的步骤不同

试图解决:

我将时间向量设置为零,但有一个错误

a.time=[];
错误:为“测试/来自工作区”指定的连续采样时间无效。当工作区的输入是没有时间数据的结构时,不允许连续采样时间。要消除此错误,请选择离散采样时间或更改输入数据以包含时间数据

问题:

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

对于Simulink块中的每个时间步读取一行而不是整个数据列表,最好的方法是什么


如果有人能为我的案例提供见解/解决方案/替代方法,我将不胜感激。

数据中的时间向量与Simulink在模拟模型时使用的时间步长几乎没有关系。 将您的输入时间/数据视为一个查找表,Simulink将使用该表为其决定采取的每个时间步使用插值来获取输入值

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

也许您可以使用?其中使用时间向量作为断点,使用ddata作为表数据。 如果Simulink在时间向量的两个点之间有一个时间点,则可以使用线性/三次插值或使用最近的点。这样可以避免将Simulink强制到某些时间点


你的模特是干什么的?它实际上有连续状态吗?如果没有,您应该将解算器更改为FixedStepDiscrete,这可能会很好地解决您的问题。我的模型是透视非线性观察者。输入是离散的,但模型作为连续模型工作。这会对设置产生影响吗?您好,通过使用步长为22/565的固定步长解算器,如果我的模型是透视非线性观察者(连续模型),是否需要更改此设置?许多可能是大多数连续时间模型都使用可变步长解算器,很可能是。