如果我正确地回答了您的问题,并且输入是时间变量,您可以使用From Workspace 并通过InitFcn 在Callbacks 中调用您的初始化脚本。
假设您有一个名为 init_script 的初始化脚本:
输入InitFcn这个:init_script;因此,当您运行 Simulink 时,该脚本首先运行。
假设这是您在init_script 中的时间序列:
ts = timeseries(randn(10,2),'Name','TS');
将 ts 放入From Workspace:
但是,如果这些不是时变向量,则执行相同的操作并改用constant 块,在其值字段中输入向量的名称,然后再次将包含这些向量的脚本放入InitFcn 中Callbacks:
X = randi(10,6,1);
Y = randi(10,6,1);
然后执行您需要的操作:
所以名为 simout 的 To Workspace 块将为您提供:
simout.Data(:,:,1)
ans =
14
9
16
16
10
3
最后,如果您有很多这些向量和组件,您可以从 Matlab Workspace 轻松创建它们:
my_struct.x = randn(6,1);my_struct.y = randn(6,1);
new_system('myModel')
open_system('myModel')
pos = [10 10 20 30]
for i =1:10
add_block('built-in/Inport',['myModel' '/In1'],'Position',pos);
add_block('built-in/Constant',['myModel' strcat('/Cx', num2str(i))],'Position',pos+2);
add_block('built-in/Constant',['myModel' strcat('/Cy', num2str(i))],'Position',pos+i);
pos = pos + 1;
X_vector = my_st.x
set_param(strcat('myModel/Cx', num2str(i)),'Value', X_vector)
Y_vector = my_st.x
set_param(strcat('myModel/Cy', num2str(i)),'Value', Y_vector)
....
当然,这个 for 循环代码是为了给你一个想法,实际上会更复杂,你会知道如何最好地处理它。