指南中的元胞数组索引
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' 选项的示例屏幕截图:
希望对您有所帮助!如果不是请告诉我我会修改代码!
我正在创建一个图形用户界面,它将根据弹出菜单绘制数组。假设选项是 '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' 选项的示例屏幕截图:
希望对您有所帮助!如果不是请告诉我我会修改代码!