【问题标题】:Matlab GUI. Set pushbutton handles in another .m fileMatlab图形用户界面。在另一个 .m 文件中设置按钮句柄
【发布时间】:2016-06-09 16:25:04
【问题描述】:

我有一个很大的 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 文件中完成所有其他操作(读取值、显示消息),只需通过界面中的interface_master(handles) 连接两者回调函数。但现在我被这些按钮卡住了。

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

【问题讨论】:

  • 我对您的代码的作用有些困惑。 n 目前是否规定显示哪个数字?有没有机会发code_1code_2的相关部分?
  • 您是否有机会尝试在 MATLAB 中实现一些设计模式(例如 MVP、MVC)?就像 Suever 一样,我对您要做什么以及为什么感到困惑。您能否提供所需行为的图表/流程图...?
  • code_1 和 code_2 是相当大的 Matlab 脚本,计算给定数量样本 n 的许多变量。然后 code_1 和 code_2 正在保存结果和保存数字。它们在没有 GUI 的情况下运行良好。我尝试以用户自己定义样本数量的方式连接 GUI。然后 code_1 和 code_2 运行以计算所有结果。最后,我希望用户能够在 GUI 中显示他选择的图形。这些数字已由 code_1 和 code_2 生成并保存(不显示)。也许我把事情复杂化了。这基本上就是我想要做的。

标签: matlab matlab-guide


【解决方案1】:

我已经创建了一个非常简化的版本。一般来说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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多