由于求解器“固定步”的配置导致的错误

时间:2015-02-05 17:02:23

标签: matlab buffer simulink

我尝试了整个Simulink模型,其配置在上一个问题的答案中提到am304。但是,我看到了一个关于固定步长的错误。不幸的是,我无法理解它的含义:

计算出的固定步长(2.195764022074938e-011)比模型“test”中的所有离散采样时间小1000000倍。已根据以下指定的离散采样时间计算此固定步长:

[2.247191011235955e-005 0]
[4.49438202247191e-005 0]
[0.1 0]
[1 0]

以及以下传播的离散采样时间:

[2.195764022074938e-011 0]
[4.391528044149876e-011 0]
[4.885574949116737e-008 0]
[5.374132444028412e-007 0]
[9.380303902304136e-006 0]

在模型中。您可以通过切换到可变步长求解器或指定固定步长来修复此错误,使得离散采样时间(周期和偏移)是固定步长的整数倍。

我已经将求解器更改为变量步骤:它可以工作但是,我在第一个与另一个缓冲区相关的问题(最后一个(模型中间还有其他缓冲区))得到了同样的问题:)

'test / ALAMOUTI Receiver / Buffer1'中S-Function'sdsprebuff2'报告的错误:该块的所有采样时间必须是离散的。 不允许连续或恒定的采样时间。

那么请你帮我解决这个问题? 提前致谢

1 个答案:

答案 0 :(得分:2)

我假设你的代码中某处有fs,你正在抽样。 Simulink告诉你的是:如果你使用固定步长,请使用fs的整数倍。

这是有道理的,好像你的fs是1Hz,并且你每0.6秒做一次模拟步骤,那么时间= 1s(和其他)将不会被采样,因为你的模拟步骤将是{{1 }}

因此,您可以让Simulink单独选择模拟步骤(变量步骤),也可以定义固定步骤,但必须与[0 0.6 1.2 1.8 ...]成比例。例如:if fs,则固定步长可以是:1,0.5,3.333333,0.25,0.2,...