我的下拉列表包含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 in@(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
答案 0 :(得分:1)
你不应该使用'=='比较字符串,因为如果字符串的长度不同,它会抛出你看到的错误。基本上'=='正在比较char类型的两个矩阵 - 如果它们的长度不同,则未定义'=='。由于“低通”的长度为8,而“带通”的长度为9,因此您无法以这种方式对它们进行比较。
请改用strcmp
。如果您不关心案件,请strcmpi
。