在循环中调用Matlab GUI变量

时间:2014-05-25 10:59:25

标签: matlab user-interface

对于m文件中的MATLAB GUI,我想调用一组变量。我已将变量标记为axes1,axes2,axes3,....... axes125。我怎么能在循环中调用它?有可能吗?

L = imread('white.jpg','jpg');
set(project.cantStop,'CurrentAxes',project.axes1);
set (imshow(L));

参见代码

set(project.cantStop,'CurrentAxes',project.axes1); 

我想为所有125个变量设置相同的方式

1 个答案:

答案 0 :(得分:0)

使用单元格数组存储轴'标记为字符串并将其用作handles的字段名,如下所示:

%// Cell arary of strings wih the axes's tags
axes_list = {'axes1','axes2','axes3'};

%// For demo on how to use the cell array, use it to choose the axes with
%// tag - `project.axes2`
axes(project.(axes_list{2}));

因此,您可以使用for循环遍历您的案例的轴,如下所示 -

for k = 1:numel(axes_list)
    set(project.cantStop,'CurrentAxes',project.(axes_list{k})); 
end

作为类似于您尝试使用示例代码实现的内容的示例,您可以在轴上显示一系列图像。对于演示,如果您想要在GUI的三个轴上显示一组三个图像,请设想。

%// List of image filenames as a cell array
files_list = {'p1.jpg','p2.jpg','p3.jpg'};

%// List of axes tags as a cell array of strings
axes_list = {'axes1','axes2','axes3'};

%// Show those three images on three different axes of the GUI 
for k = 1:numel(files_list)
    L = imread(files_list{k},'jpg');
    axes(project.(axes_list{k}));
    imshow(L);
end