如何在gui的基础工作区中运行matlab文件

时间:2013-11-23 09:23:41

标签: matlab matlab-guide

我是Matlab的新手,我用一些按钮创建了一个GUI。

现在,在我当前的文件夹中,我有4个文件:

 init.m
 example.mdl (simulink)
 gui.fig
 gui.m

gui.fig我有两个按钮:

  1. Init按钮
  2. start_simulink按钮
  3. 我希望当我按下此按钮时,相应的操作:

    1. 启动init
    2. 启动simulink
    3. 但我希望在按下按钮后,m文件和simulink在基本工作区中执行,而不仅仅在回调工作区中执行。

      我怎样才能做到这一点?

2 个答案:

答案 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')

运行脚本