2013-11-20 4 views
0

Мой выпадающий список содержит ff. струны: низкий проход, высокий проход, полоса пропускания, стоп-диапазон. Всякий раз, когда я выбираю Low Pass, появляется ошибка ниже. Следующий код работает для остальных.размер матрицы должен соответствовать

Моя цель - сделать edtCutoff2 и txtRange невидимыми, когда я выбираю Low Pass и High Pass, но приведенный ниже код работает только для High Pass.

Ошибка:

Error using == 
Matrix dimensions must agree. 

Error in untitled>popFreqResp_Callback (line 168) 
if ((str == 'Stop Band') | (str == 'Band Pass') == 1) 

Error in gui_mainfcn (line 96) 
     feval(varargin{:}); 

Error in untitled (line 42) 
    gui_mainfcn(gui_State, varargin{:}); 

Error [email protected](hObject,eventdata)untitled('popFreqResp_Callback',hObject,eventdata,guidata(hObject)) 


Error while evaluating uicontrol Callback 

Код сниппета

function popFreqResp_Callback(hObject, eventdata, handles) 
list=get(handles.popFreqResp,'String'); 
str=list{get(handles.popFreqResp,'Value')}; 
if ((str == 'Stop Band') | (str == 'Band Pass') == 1) 
    set(handles.edtCutoff2,'Visible','on'); 
    set(handles.txtRange,'Visible','on'); 
else 
    set(handles.edtCutoff2,'Visible','off'); 
    set(handles.txtRange,'Visible','off'); 
end 
+1

См. [Здесь] (http://stackoverflow.com/a/19870322/2778484) и [здесь] (http://stackoverflow.com/a/19986318/2778484). – chappjc

ответ

1

Вы не должны сравнивать строки с помощью «==», потому что он будет бросать ошибку, которую вы видите, если строки не такие же длины , По существу '==' сравнивает две матрицы типа char - если они не имеют одинаковой длины, '==' не определяется. Поскольку «Low Pass» имеет длину 8, а «Band Pass» имеет длину 9, вы не можете сравнивать их таким образом.

Используйте вместо этого strcmp. Или strcmpi если вас не волнует случай.

Смежные вопросы