我需要帮助运行Simulink模型,其中包含结构中包含的MATLAB工作空间中的数据。以下是我想要做的非常简化的用例
用例:
我在MATLAB工作空间中有一个名为“data_in”的结构,它有两个字段x和y,它们是向量。我有一个simulink模型,其中两个Inports
名为x和y。
这就是我想要的:
一个。从Simlunk模型中读取Inports的名称。在这种情况下,它将是x和y
湾以编程方式将结构中的数据 - “data_in”分配给Simulink模型中的端口“x”和“y”。结构“data_in”包含两个向量“x”和“y”,映射到Simulink Inports
上述用例是一个非常简化的场景。我打算使用的模型可以有100个输入,因此我不想使用“From Workspace”块,因为添加100个它是不切实际的
如何在Simulink中处理这种情况。我不仅仅是MATLAB和Simulink的初学者。所以,详细的答案对我有很大帮助
答案 0 :(得分:1)
如果我的问题得到了正确,输入是时间变量,您可以使用From Workspace
并在InitFcn
中通过Callbacks
调用初始化脚本。
假设您有一个名为init_script
的初始化脚本:
放入InitFcn
这个:init_script
;因此,当您运行Simulink时,首先运行脚本。
假设这是init_script
中的时间序列:
ts = timeseries(randn(10,2),'Name','TS');
但是如果这些不是时变矢量,那么使用constant
块代替,在其值字段中放置矢量名称,然后再将包含这些矢量的脚本放在InitFcn
中{ {1}}:
Callbacks
所以名为simout的To Workspace块会给你:
X = randi(10,6,1);
Y = randi(10,6,1);
最后,如果你有很多这些矢量和组件,你可以从Matlab Workspace轻松创建它们:
simout.Data(:,:,1)
ans =
14
9
16
16
10
3
当然这个for循环代码可以为你提供这个想法,实际上会更复杂,你会知道如何最好地处理它。