指南中的单元数组索引

时间:2015-01-07 21:42:48

标签: matlab matlab-guide

我正在创建一个gui,它将根据弹出菜单绘制数组图形。假设选择是“全部”A“B”和“C”。使用弹出菜单中的各个回调值可以轻松索引单元阵列。 I.E. 在弹出回调中:val = get(hObject,'Value')-1 - > handles.val = VAL 在按钮回调中:plot(cellarray(handles.val))

我的问题是如何做“全部”部分。我通常使用cellarray(:),我不能做handle.val =':'并传入它。我怎样才能动态访问整个单元格数组? (假设单元阵列是1 x 5。)

1 个答案:

答案 0 :(得分:0)

这是一种解决问题的方法。

基本上我把'All'选项放在弹出菜单中字符串的末尾,如果用户选择它,则val等于6,即handles.Data+1中的元素数量,这使得输入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

选择了“全部”选项的示例屏幕截图:

enter image description here

希望有助于您入门!如果没有,请告诉我,我将修改代码!