Как использовать значение всплывающего окна и сохранить его как дескриптор в графическом интерфейсе Matlab

Я получаю сообщение об ошибке в своем коде. Я понятия не имею, почему он дает ошибку. Я создаю графический интерфейс в Matlab. Я использую следующий код:

function popupmenu1_Callback(hObject, eventdata, handles)

% hObject    handle to popupmenu1 (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

% Hints: contents = cellstr(get(hObject,'String')) returns popupmenu1 contents as cell array

% contents{get(hObject,'Value')} returns selected item from popupmenu1

contents=cellstr(get(hObject,'String'));

a=contents{get(hObject,'Value')};

if a=='CRI'

    b=1

end


if 
a=='GAI'

    b=2

end


if
 a=='CQS'

    b=3


end



handles.indices=b;

guidata(hObject,handles);


when I use this, I am not getting any error. but when I increase my code to the following:


% --- Executes on selection change in popupmenu1.

function popupmenu1_Callback(hObject, eventdata, handles)

% hObject    handle to popupmenu1 (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)


% Hints: contents = cellstr(get(hObject,'String')) returns popupmenu1 contents as cell array

%        contents{get(hObject,'Value')} returns selected item from popupmenu1

contents=cellstr(get(hObject,'String'))

a=contents{get(hObject,'Value')}

if 
a=='CRI'

    b=1

end


if 
a=='GAI'

    b=2

end

if
 a=='CQS'

    b=3

end


if
 a=='CRI-CAM02UCS'

    b=4

end


if 
a=='nCRI'

    b=5

end


if
 a=='Luminous Efficacy'

    b=6

end




handles.indices=b;

guidata(hObject,handles);

Ошибка, которую я получаю:

Ошибка при использовании ==

Размеры матрицы должны совпадать.

Ошибка в input_spd>popupmenu1_Callback (строка 108)

если a=='CRI-CAM02UCS'

Ошибка в gui_mainfcn (строка 96)

    feval(varargin{:});

Ошибка в input_spd (строка 42)

gui_mainfcn(gui_State, varargin{:});

Ошибка в

@(hObject,eventdata)input_spd('popupmenu1_Callback',hObject,eventdata,guidata(hObject))

Ошибка при оценке обратного вызова uicontrol


person user2377887    schedule 12.02.2014    source источник


Ответы (1)


Если вы используете напрямую, a=='CRI-CAM02UCS' выполняет посимвольное сравнение обеих строк. Если обе строки не содержат одинаковое количество символов, появится ошибка. Вы можете попробовать изменить эту строку на strcmp(a,'CRI-CAM02UCS').

person tashuhka    schedule 12.02.2014
comment
Большое спасибо. он работает абсолютно нормально. Я так тебе благодарна, ты не представляешь. Спасибо, брат. Да благословит тебя Бог! - person user2377887; 12.02.2014