我尝试了整个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'报告的错误:该块的所有采样时间必须是离散的。 不允许连续或恒定的采样时间。
那么请你帮我解决这个问题? 提前致谢
答案 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,...