2015-01-07 2 views
1

Я создаю gui, который будет отображать массив в зависимости от всплывающего меню. Предположим, что это «Все», «B» и «C». Его легко индексировать массив ячеек с отдельными значениями обратного вызова из всплывающих меню. И.Е. В всплывающем обратном вызове: Val = прибудет (hObject, 'Value') -1 -> handles.val = значение В Кнопка обратного вызова: сюжет (cellarray (handles.val))Индекс ячейки массива из справочника

Мой вопрос заключается в том, чтобы сделать «Все». Где я обычно использовал cellarray (:), я не могу сделать handles.val = ':' и передать его. Как я могу динамически получить доступ к массиву всей ячейки? (Скажем, массив ячеек равен 1 x 5.)

ответ

0

Вот как это можно решить.

В основном я помещаю опцию «Все» в конце строк во всплывающем меню, а если пользователь ее выбирает, то значение 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 

скриншот образца с помощью опции 'All' выбран:

enter image description here

Надежда, что помогает вам начать! Если нет, скажите мне, что я изменю код!

+0

Спасибо за понимание! Я думаю, это сработает. –

+0

Удивительный! Если это поможет вам, вы можете пометить ответ, как принято, пожалуйста? Благодаря! –