2013-11-23 48 views
2

我是Matlab新手,我用一些按鈕創建了一個GUI。如何從gui運行基本工作區中的matlab文件

現在,在我的當前文件夾中我有4個文件:

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

gui.fig我有兩個按鈕:

  1. Init按鈕
  2. start_simulink按鈕

當我按下此按鈕時,我希望這樣做他相應的操作:

  1. 開始初始化
  2. 開始SIMULINK

,但我想在按下一個按鈕m文件和Simulink在基地工作區進行,而不是隻在一個回調的工作區後, 。

我該如何做到這一點?

+0

['evalin'](http://mathworks.com/help/matlab/ref/evalin.html)是你的朋友。 – Hoki

回答

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 
+0

好的,但我有我的文件在我當前的文件夾,我想按下一個按鈕,它運行在一個基地WS不回撥WS – user3024516

+2

我明白了,但它是如何重要的m文件被調用,當你之後在基礎工作區中擁有所有期望的變量?那就是我用'assignin('base',...)'的代碼正在做的事情。 – thewaywewalk

1

我想我的問題是與你相似。這是我的解決方案。

您的腳本需要從您的GUI中獲取任何變量,請務必使用assignin('base','variablename')將其分配給基礎工作區。在你的按鈕的回調函數中,使用evalin('base','scriptname')