2015-02-05 92 views
0

我尝试了我的整个Simulink模型,其配置在我上一个问题的答案中提到了am304。但是,有关固定步长的错误在我看来。不幸的是,我不明白它是什么意思:由于求解器的配置“固定步长”而导致的错误

计算出的固定步长(2.195764022074938e-011)比模型'测试'中的所有离散采样时间小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函数'sdsprebuff2'报告的错误:此块的所有采样时间必须是离散的。 不允许连续或恒定的采样时间。

所以你能帮我解决这个问题吗? 在此先感谢

回答

2

我想你有一些fs在你的代码中的某个地方,你正在抽样的东西。 Simulink告诉您的是:如果您使用固定步长,请使用fs的整数倍。

这很有道理,就好像你的fs是1Hz,并且你每0.6s做一个模拟步骤,那么时间= 1s(和其他)将不会被采样,因为你的模拟步骤将是[0 0.6 1.2 1.8 ...]。因此,您可以让Simulink自己选择模拟步骤(变量步长),也可以定义一个固定步长,但必须与fs成正比。例如:如果fs=1,那么固定步骤可以是:1,0.5,3.33333,0.25,0.2,...

+1

同意。就像我在回答您的其他问题时所说的那样,您需要确保模型中的块和求解器使用的采样时间一致。理想情况下,它们都是一样的(单速率模型),但是如果您想要不同的采样时间,则需要使用速率转换模块对其进行管理。作为创建模型的人员,要确保所有采样时间都已正确定义,这取决于您。就像我在之前的回答中所说的那样,您可以使用“查看样本时间信息”功能来检查整个模型中使用哪些样本时间。 – am304 2015-02-05 17:49:14

+0

是的,你有权利。我做了不同的抽样时间,没有管理。是的,现在我解决了这个问题。非常感谢您的帮助和支持。 – Hoffen 2015-02-06 12:12:02

+0

@霍芬如果这个答案帮助你不要忘记接受它;) – 2015-02-06 12:43:47

相关问题