前提
我正在使用GUIDE创建MATLAB GUI。 我有大约10个“编辑文本”框和大约10个“静态文本”框。 该程序的目的是从“编辑文本”框中获取数据,执行一系列计算,然后将结果输出到“静态文本”框。
问题
我的问题是,有一个函数refresh_data()
需要访问20个对象中每个对象的句柄。所以现在我将所有句柄传递给函数,看起来像这样......
refresh_data(handles.edittext1, handles.edittext2, ... handles.statictext10)
函数refresh_data
包含在单独的.m文件中。有没有办法立刻通过我的所有句柄?
随意提出其他解决方法,我是MATLAB GUI的新手。
答案 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。