Matlab 中的弹出菜单和图形焦点
Pop-up menu and graph focus in Matlab
所以我在 GUI 中有这个,它使用给定的 x、y 和 z 坐标绘制散点图。
function activation(hObject, eventdata, handles)
cla(handles.eeg_final,'reset')
axes(handles.eeg_final)
x = [-30;-50;-40;-60;-60;-60;-30;30;60;60;60;40;50;30];
y = [50;30;30;0;20;-60;-80;-80;-60;20;0;30;30;50];
z = [30;0;40;30;0;0;10;10;0;0;30;40;0;30];
location={};
s=cell(1,14);
for a = 1:14
location{1} = sprintf('AF3');
location{2} = sprintf('F7');
location{3} = sprintf('F3');
location{4} = sprintf('FC5');
location{5} = sprintf('T7');
location{6} = sprintf('P7');
location{7} = sprintf('O1');
location{8} = sprintf('O2');
location{9} = sprintf('P8');
location{10} = sprintf('T8');
location{11} = sprintf('FC6');
location{12} = sprintf('F4');
location{13} = sprintf('F8');
location{14} = sprintf('AF4');
n = location{a};
s(a)=strread(sprintf(n),'%s','delimiter','');
end
% the plot
scatter3(-x,-y,-z,'filled'); % <- NOT <plot3>
text(-(x+.3),-(y-.5),-z,s,'color',[1,0,0]);
view(115,18)
然后我有一个绘图选项调用此函数和其他函数,这些函数专注于 handles.eeg_final
。
function plot_options_popup_Callback(hObject, eventdata, handles)
% hObject handle to plot_options_popup (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
str = get(hObject, 'String');
val = get(hObject, 'Value');
switch str{val};
case 'EEG Plot - 14 Channel'
return
case 'Activation Plot'
activation
case 'Emotion State Plot'
emotion_state
end
但是每当我尝试调用 Activation Plot
时,我都会收到一条错误消息,提示 'Not enough arguments.'
谁能告诉我哪里错了?
错误,因为您使用 3 个输入参数编写函数 activation
。您可以像这样更改函数:
function activation(hObject, handles)
cla(hObject,'reset');
axes(hObject);
% do what you want here
% update handles struct at the end
guidata(hObject, handles);
并通过以下方式在弹出菜单中调用它:
activation(handles.eeg_final, handles);
所以我在 GUI 中有这个,它使用给定的 x、y 和 z 坐标绘制散点图。
function activation(hObject, eventdata, handles)
cla(handles.eeg_final,'reset')
axes(handles.eeg_final)
x = [-30;-50;-40;-60;-60;-60;-30;30;60;60;60;40;50;30];
y = [50;30;30;0;20;-60;-80;-80;-60;20;0;30;30;50];
z = [30;0;40;30;0;0;10;10;0;0;30;40;0;30];
location={};
s=cell(1,14);
for a = 1:14
location{1} = sprintf('AF3');
location{2} = sprintf('F7');
location{3} = sprintf('F3');
location{4} = sprintf('FC5');
location{5} = sprintf('T7');
location{6} = sprintf('P7');
location{7} = sprintf('O1');
location{8} = sprintf('O2');
location{9} = sprintf('P8');
location{10} = sprintf('T8');
location{11} = sprintf('FC6');
location{12} = sprintf('F4');
location{13} = sprintf('F8');
location{14} = sprintf('AF4');
n = location{a};
s(a)=strread(sprintf(n),'%s','delimiter','');
end
% the plot
scatter3(-x,-y,-z,'filled'); % <- NOT <plot3>
text(-(x+.3),-(y-.5),-z,s,'color',[1,0,0]);
view(115,18)
然后我有一个绘图选项调用此函数和其他函数,这些函数专注于 handles.eeg_final
。
function plot_options_popup_Callback(hObject, eventdata, handles)
% hObject handle to plot_options_popup (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
str = get(hObject, 'String');
val = get(hObject, 'Value');
switch str{val};
case 'EEG Plot - 14 Channel'
return
case 'Activation Plot'
activation
case 'Emotion State Plot'
emotion_state
end
但是每当我尝试调用 Activation Plot
时,我都会收到一条错误消息,提示 'Not enough arguments.'
谁能告诉我哪里错了?
错误,因为您使用 3 个输入参数编写函数 activation
。您可以像这样更改函数:
function activation(hObject, handles)
cla(hObject,'reset');
axes(hObject);
% do what you want here
% update handles struct at the end
guidata(hObject, handles);
并通过以下方式在弹出菜单中调用它:
activation(handles.eeg_final, handles);