我是Matlab的新手,我用一些按钮创建了一个GUI。
现在,在我当前的文件夹中,我有4个文件:
init.m
example.mdl (simulink)
gui.fig
gui.m
在gui.fig
我有两个按钮:
Init
按钮start_simulink
按钮我希望当我按下此按钮时,相应的操作:
但我希望在按下按钮后,m
文件和simulink在基本工作区中执行,而不仅仅在回调工作区中执行。
我怎样才能做到这一点?
答案 0 :(得分:2)
不完全是你想要的,但结果相同。最后,所有变量都将在您的基础工作区中,在我看来,在最初调用脚本的情况下,这并不重要。
对于初始化,我假设您只是将参数加载到基础工作区,因此您可以在回调中使用一个小函数:
function assign2workspace( scriptname )
eval( scriptname );
temp = who;
for iv = 1:length(temp)
assignin('base',temp{iv},eval(temp{iv}));
end
end
其中scriptname
是您的初始化脚本。
对于Simulink,您可以模拟(未经测试)
function startSimulink( modelname )
sim( modelname );
% do what has to be done
temp = who;
for iv = 1:length(temp)
assignin('base',temp{iv},eval(temp{iv}));
end
end
答案 1 :(得分:1)
我认为我的问题与你的问题类似。这是我的解决方案。
脚本需要从GUI获取的任何变量,请务必使用assignin('base','variablename')
将其分配给基础工作区。在按钮的回调函数中,使用evalin('base','scriptname')