matlab指南中的函数用于检查无效值

时间:2018-05-17 01:39:06

标签: matlab matlab-guide

我正在为我的Matlab指南程序编写一个函数。我想在0到1的指南中应用3个文本框的限制,它应该只是数字。 (如果用户输入错误框应该生成的无效值)。问题是我想为其编写一个函数,而不是在每个文本框的回调中编写限制代码。用户也不必一次输入所有值,而是当用户输入三个值中的任何一个并生成反馈时,该函数应该运行。我写的函数如下,但它不起作用。 (没有必要将所有三个输入都提供给一个函数,这就是我在输入之间使用||的原因)

function CheckMe(maxMBT || minMBT || mainMBT)

 max_MBT= str2double(get(hObject, 'String'));

if isnan(maxMBT)||maxMBT < 0|| maxMBT> 1

  errordlg('Invalid max value for MBT. Please enter values between 0 to 1');
set(max_MBT, 'String', 0);

if isnan(minMBT)||minMBT < 0|| minMBT> 1
    set(min_MBT, 'String', 0);
    errordlg('Invalid min value for MBT. Please enter values between 0 to 1');

if isnan(mainMBT)||mainMBT < 0 || mainMBT >1
    set(edtMBT, 'String', 0);
    errordlg('Invalid value of MBT. Enter values between 0 to 1');

end
end
 end

1 个答案:

答案 0 :(得分:0)

您的语法错误,可选参数不会与||分开传递。相反,我建议使用2个输入:

  1. 输入您要检查的值
  2. 输入此类型的“类型”,具体取决于触发的回调。
  3. 该功能看起来像这样:

    function valid = CheckMe( userInput, boxType )
    % This checks for valid inputs between 0 and 1.
    % USERINPUT should be a string from the input text box
    % BOXTYPE should be a string specified by the callback, to identify the box
    
        % Do the check on the userInput value
        userInput = str2double( userInput );
        if isnan( userInput ) || userInput < 0 || userInput > 1
            % boxType specific error message
            errordlg(['Invalid value for ' boxType '. Please enter values between 0 to 1']);
            % Output flag
            valid = false;
        else
            valid = true;
        end           
    
    end
    

    此函数返回一个布尔变量valid,您可以在回调函数中使用它,如下所示:

    validatedInput = CheckMe( '0.5', 'TestBox' ); % Using the function to check input
    if ~validatedInput
        % Input wasn't valid!
        myTextBox.String = '0';
    end