指南中的元胞数组索引

Cell array index from guide

我正在创建一个图形用户界面,它将根据弹出菜单绘制数组。假设选项是 'All' 'A' 'B' 和 'C'。使用弹出菜单中的各个回调值很容易为元胞数组建立索引。 IE。 在弹出回调中:val = get(hObject,'Value') -1 --> handles.val=val 在按钮回调中: plot(cellarray(handles.val))

我的问题是如何完成 'All' 部分。在我通常使用 cellarray(:) 的地方,我不能执行 handles.val=':' 并将其传入。如何动态访问整个单元格数组? (假设元胞数组是 1 x 5。)

这是解决该问题的方法。

基本上我把'All'选项放在弹出菜单的字符串末尾,如果用户选择它,那么val等于6,即[=11=中的元素数], 这使得输入 if 语句的条件。

function GUI_PopUp
clc
clear

%// Generate dummy data
handles.Data = cell(1,5);

x = 1:20;
handles.Data{1} = rand(1,20);
handles.Data{2} = 2.*x-5;
handles.Data{3} = x-10;
handles.Data{4} = x;
handles.Data{5} = 3.*x;

handles.x = x; % I was lazy sorry :)

%// Create GUI components
hFigure = figure('Position',[100 100 500 500],'Units','Pixels');

handles.axes1 = axes('Units','Pixels','Position',[60,90,400,300]);

PopupString = {'1';'2';'3';'4';'5';'All'};
handles.Pop = uicontrol('Style','popup','Position',[100 380 40 60],'String',PopupString,'Callback',@(s,e) PopupCallback);
handles.text = uicontrol('Style','text','Position',[100 460 40 30],'String','Select data');


guidata(hFigure,handles);

    function PopupCallback
       
        handles = guidata(hFigure);
        
        val = get(handles.Pop,'Value');
        
        %// If selected 'All'
        if val == (numel(handles.Data)+1)
            
            hold all
            for k = 1:numel(handles.Data)
            plot(handles.x,handles.Data{k},'parent',handles.axes1)
            end
            
        else
            
        plot(handles.x,handles.Data{val},'parent',handles.axes1)
        
        end
    end
end

选择了 'All' 选项的示例屏幕截图:

希望对您有所帮助!如果不是请告诉我我会修改代码!