Akshay
Akshay

Reputation: 2763

Pop-up menu and graph focus in Matlab

So I have this in GUI, which plots a scatter3 plot with the given x, y and z coordinates.

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)

then I have a plotting option which calls this function and other function which are focused to 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

But when ever I try to call Activation Plot I get an error saying that 'Not enough arguments.'

could anyone tell me where i am going wrong?

Upvotes: 1

Views: 114

Answers (1)

scmg
scmg

Reputation: 1894

Error because you wrote function activation with 3 input arguments. You can change the function like:

function activation(hObject, handles)

cla(hObject,'reset');
axes(hObject);

% do what you want here

% update handles struct at the end
guidata(hObject, handles);

And call it in the popup menu by:

activation(handles.eeg_final, handles);

Upvotes: 1

Related Questions