我对模拟Simulink模型的Matlab代码有疑问。例如,我的系统现在包含一些不同的子系统/代码:
主脚本–为模拟Simulink模型设置初始条件,还保存并绘制一些输出(主代码)。
模仿我的系统操作的Simulink模型。
子脚本,它是Simulink模型中的功能块。在这种情况下,此块可得出仿真期间在模型中使用的某些值(子代码)。
现在,我正在尝试在Simulink的一个子系统中引入一个附加块。为了简化起见,它是一个带有变量" V"的常量块。我在子代码中分配V的初始值。但是,当我运行将执行模型的Main代码(内部有一个恒定块V)时,它给我的错误是未定义V。如果我在主代码中初始化V,它将具有声明的值,而不管对子代码中的V进行任何操作。
希望我或多或少很好地描述了这个问题,因为我无法在此处发布模型。先感谢您。
这不是一个好的解决方案,因此我不会给出答案,但是您是否尝试过将其声明为全局变量?我只是记得,我不确定Simulink变量的范围,将变量推入主工作区或从主工作区推入是很痛苦的。
嗨,我已经仔细检查了。在Simulink中用数据存储器存储块声明为全局变量,但结果相同。一旦我从Main Code中删除了变量,就不会编译模型。
simulink模型要求在初始化期间所有数据均可用。通常,在使用V的常量块被初始化之前,您需要初始化"子脚本"(这是一个非常不好的名字)(并因此在工作区中创建变量V)。但是,从根本上讲,您根本不应该使用工作区来执行此操作,并且您当然不应该基于在另一个块中执行的代码来初始化一个块。但是,如果不确切知道您要使用此配置真正实现的目标,就无法