2016-06-09 69 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