Matlab GUI。在另一个.m文件中设置按钮句柄

时间:2016-06-09 16:25:05

标签: matlab matlab-guide

我有一个很大的Matlab代码,现在我正在尝试将它连接到GUI。我创建了一个函数

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文件中执行其他所有操作(读取值,显示消息),只需通过{{ 1}}在接口回调函数中。但现在我被这些按钮困住了。

我真的很感激这里的一些帮助。我之前从未做过任何GUI。

1 个答案:

答案 0 :(得分: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