matlab simulink 中的 状态空间的 initial conditions 能用变量么

简述就是 一个系统有两个阶段 使用不同的状态方程 当第一阶段运行到满足一定条件时 切换到第二阶段 并且用第一阶段结束时刻的某个输出值作为第二阶段状态方程的初始条件。

这是个两个阶段的系统 先第一阶段执行 满足一个判断条件后输出数字1 给detect change
然后用detect change 判断 当产生上升波形时输出1 时用使能子系统 enabled subsystem 读到一个输出 x0 即Stap3 initial w2,
同时启动第二阶段的状态方程 即使用 switch14 将第二阶段的状态方程的输入由0 变为 总线上的输入。
我现在想把读出的x0即Stap3 initial w2 作为第二阶段中的状态空间state—space 的 initial conditions 请问可以么 怎么做 谢谢。

初始条件使用变量是可以的,但题主的做法不可行。

模型参数中使用的变量,是在初始化阶段(也就是按下了运行按钮,但还没有真正开始运行的阶段)从工作区中获取具体的值,然后在整个仿真过程中都是使用初始化阶段获取的值,即使变量的值在此期间有变化,也不会影响到模型中对应的数据。

另一方面,我没看明白题主是打算怎样把第一阶段的结果传递到工作区变量的,如果采用常规手段(例如To Workspace),数据要等到模型停止运行才会传递给工作区变量,这样也是达不到在运行过程中更新变量的目的的。

以上两个过程,即第一阶段的数据传递给工作区变量,再把变量的值传递给第二阶段作为初值使用,基本上都是存在问题的(其中第一阶段的结果传递到工作区在可以采取一些手段解决),所以这种思路原则上是行不通的。

可以尝试的做法:

1、模型分两次运行,到第一阶段结束时停止,把相关数据传递到工作区(包括时间、初值以及其它在第二阶段需要使用的信息),然后,再把这些数据作为第二阶段的初值,重新运行模型。

2、直接在模型中进行数据传递。可能存在的一个问题是,状态空间模块不能接受外部输入信号作为初值,解决的手段可以考虑直接使用积分模块搭建系统,其初值选择以外部输入的形式提供。另外,在两个阶段切换时,应该同时对积分器进行复位,以确保第一阶段传递过来的初值信息能够被积分器使用。追问

我才开始使用matlab 能不能具体说一下第二种方法 给个用积分模块建立方程的例子 还有积分器复位是怎么用的 谢谢

追答

用积分器实现状态方程的原理图如下,应该知道怎么搭建了吧(除积分器之外,还用到求和与增益模块,需要注意增益应该是Matrix Gain):

积分器复位可以在积分器的参数设置对话框里面找到External reset,选择除none之外的选项后就会在积分器上另外多出一个端口,即复位端口。

温馨提示:答案为网友推荐,仅供参考
相似回答