矩阵维必须同意

时间:2013-11-20 23:59:41

标签: matlab drop-down-menu filter

我的下拉列表包含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

1 个答案:

答案 0 :(得分:1)

你不应该使用'=='比较字符串,因为如果字符串的长度不同,它会抛出你看到的错误。基本上'=='正在比较char类型的两个矩阵 - 如果它们的长度不同,则未定义'=='。由于“低通”的长度为8,而“带通”的长度为9,因此您无法以这种方式对它们进行比较。

请改用strcmp。如果您不关心案件,请strcmpi