我相信在尝试导入和测试在系统识别工具箱(SIT)中创建的Simulink中的传输函数时,我做了一些根本性的错误。
举一个简单的例子说明我在做什么。 我有一个输入,它是一个从12秒到25秒的偏移正弦波,幅度为1,频率为1.5rad / s,给出了测量输出。
我使用SIT创建了一个简单的2极1零传递函数,它给出了以下协议:
然后我尝试将此传递函数导入Simulink以便在以下配置中进行调查,该配置具有1.5rad / s的正弦输入和起始t = 12。 LTI系统块指的是工作空间内的传递函数变量:
当我运行这个模拟13秒时,块的输入正如预期的那样,但是后传递函数信号与预期的信号几乎没有一致,并且是一个数量级的输出。
预:
交的:
有人可以深入了解我出错的地方以及为什么simulink中tf
的输出与SIT中显示的模型输出几乎没有相似之处。我对控制理论有基本的把握,但我很难理解这一点。
答案 0 :(得分:1)
这可能是由于SimuLink和SI工具箱中使用的初始条件不同,后者应该使用模型估计初始条件,而Simulink对初始条件没有任何特殊要求,除非您自己指定它们。
对我而言,您的原始信号似乎处于周期性状态,因为您的输出看起来几乎像正弦波。在周期性制度中,初始条件几乎没有影响。您可以通过模拟模型更长时间来验证我的假设:如果最后,您的信号达到正确的幅度和相位滞后,就像您的数据一样,您将知道初始条件是错误的。
在任何情况下,您都可以从工具箱中获取估计的初始状态,我认为使用结果对象的InitialState
属性。
可能出现的另一个问题是您在Simulink中使用的时间离散化,以防您估计连续时间模型(拉普拉斯变量s
中的一个,而不是z
或{{1 }})。
编辑:在这种情况下,我建议您检查Simulink用于离散CT模型的内容,方法是在MATLAB中使用q
,并在Simulink中使用下面的设置。在MATLAB中,您还可以使用c2d
“模拟”对CT模型的响应,您必须指定离散化方法。
此设置允许您加载CT模型和离散化变体(在本例中为状态空间表示)。通过比较信号,您可以看到您使用的离散化方法是否与SimuLink使用的方法相同(这取决于您在设置中设置的积分方法)。