2013-11-20 2 views
0

드롭 다운 목록에 ff가 포함되어 있습니다. 문자열 : 저역 통과, 고역 통과, 대역 통과, 정지 대역. 로우 패스를 선택할 때마다 아래 오류가 표시됩니다. 나머지 코드는 아래 코드에서 작동합니다.행렬 치수가 일치해야 함

저의 목표는 저역 통과와 고역을 선택할 때 edtCutoff2와 txtRange를 보이지 않게 만드는 것입니다. 그러나 아래 코드는 고역에서만 작동합니다.

오류 :

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을 입력하십시오.

관련 문제