如何从函数内部访问MATLAB GUI句柄

时间:2013-12-04 19:13:06

标签: matlab user-interface matlab-guide

前提

我正在使用GUIDE创建MATLAB GUI。 我有大约10个“编辑文本”框和大约10个“静态文本”框。 该程序的目的是从“编辑文本”框中获取数据,执行一系列计算,然后将结果输出到“静态文本”框。

问题

我的问题是,有一个函数refresh_data()需要访问20个对象中每个对象的句柄。所以现在我将所有句柄传递给函数,看起来像这样......

refresh_data(handles.edittext1, handles.edittext2, ... handles.statictext10)

函数refresh_data包含在单独的.m文件中。有没有办法立刻通过我的所有句柄?

随意提出其他解决方法,我是MATLAB GUI的新手。

1 个答案:

答案 0 :(得分:0)

根据评论建议,您可以立即传递整个句柄结构:

function refresh_data(handles)
  temp = get(handles.edittext1, 'String')
  % convert temp to number, process, convert back to string
  set(handles.statictext1, 'String', temp)
end

由于你正在做很多这些,你可以使用Matlab的动态字段名称来循环它:

for k = 1:20
    box_to_get = ['edittext' k];
    box_to_set = ['statictext' k];
    temp = get(handles.(box_to_get), 'String');
    % processing
    set(handles.(box_to_set), 'String', temp);
end

有关详细信息,请参阅http://www.mathworks.com/help/matlab/matlab_prog/generate-field-names-from-variables.html