2016-06-09 112 views
0

我有一個很大的Matlab代碼,現在我試圖將它連接到GUI。我創建了一個功能Matlab GUI。在另一個.m文件中設置按鈕手柄

function z = interface_master(handles) 

這首出自GUI文本編輯框獲得初始參數,然後運行一些使用這些參數.m文件,例如

n = get(handles.n_value,'String'); 
n = str2num(n); 
assign('base','n',n) 
run('code_1') 
run('code_2') 
... 

在這個「碼」我創建並保存一些數字。我想現在讓用戶能夠在GUI中顯示他的選擇圖。假設我將有3個不同的按鈕(Push1,Push2,Push3)和用戶按下Push1後將顯示Figure_A。然後按下Push2後,他將得到Figure_B替換Figure_A,依此類推。我能以某種方式使它在我的功能interface_master中設置手柄嗎?

我不想過度擁擠我interface.m文件,到目前爲止,我能夠做到的一切(讀取值,顯示消息)在這個附加interface_master文件,由雙方只是通過在界面回調函數interface_master(handles)連接。但現在我被這些按鈕卡住了。

我真的很感謝這裏的幫助。我從來沒有做過任何GUI。

+0

我有點困惑你的代碼做什麼。 'n'目前是否決定顯示哪個數字?是否有機會發布'code_1'或'code_2'的相關部分? – Suever

+0

你有沒有試圖在MATLAB中實現一些設計模式(例如MVP,MVC)?就像Suever一樣,我對你想要做什麼以及*爲什麼*感到困惑。你能否提供所需行爲的圖表/流程圖? –

+0

code_1和code_2是非常大的Matlab腳本,它計算給定數量樣本n的許多變量。然後code_1和code_2正在保存結果並保存數字。沒有GUI,它們運行良好我嘗試以用戶自定義樣本數量的方式連接GUI。然後運行code_1和code_2來計算所有結果。最後,我希望用戶能夠在GUI中顯示他的選擇圖。這些數字已經由code_1和code_2生成並保存(不顯示)。也許我過於複雜的事情。這基本上是我想要做的。 – Agnieszka

回答

0

我已經創建了一個非常簡化的我正在做的事情。一般來說,code_1和code_2要大得多,界面會顯示更多的消息,而code_1和code_2會保存大約20個不同的數字。但是我所掙扎的東西可以通過一個簡單的代碼計算多項式來演示。

%% code_1.m 
x = linspace(-1,1) ; 
y = x.^n ; 


%% code_2.m 
f = figure('visible','off'); 
plot(x,y); 
set(f,'Visible','on') 
saveas(f,'power_plot_1','fig') 
delete(f) 
g = figure('visible','off'); 
plot(x,x.^(n+1)); 
set(f,'Visible','on') 
saveas(g,'power_plot_2','fig') 
delete(g) 

%%% master.m 
function z = master(handles) 

n = get(handles.n_value,'String') 
n = str2num(n) ; 
assignin('base','n',n) 

if (n < 1) 
    message = ('small n') ; 
elseif (n>10) 
    message = ('large n') ; 
else 
message=('hello world') ; 

run('code_1') 
run('code_2') 

end 
set(handles.text1,'String',message) 

,這裏是接口:

https://lh3.googleusercontent.com/-5zoGVwgJhoM/V1qdiyd667I/AAAAAAAACQ0/oaTQHYn13gIuLoSb42Q7N66AV102e-VjQCCo/s912/inter.png