Функция в руководстве по Matlab для проверки на недопустимые значения - PullRequest
0 голосов
/ 17 мая 2018

Я пишу функцию для моей справочной программы Matlab.Я хочу применить ограничение для 3 текстовых полей в руководстве от 0 до 1, и это должно быть только число.(если пользователь вводит недопустимые значения, должно сгенерироваться окно ошибки). Проблема в том, что я хочу написать одну функцию для этого вместо записи кода ограничения в обратном вызове каждого текстового поля.Пользователю также нет необходимости вводить все значения одновременно, скорее, функция должна запускаться, когда пользователь вводит любое из трех значений и генерирует обратную связь.Функция, которую я написал, выглядит следующим образом, но она не работает.(Нет необходимости, чтобы все три входа были предоставлены функции, поэтому я использовал || между входами)

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 голосов
/ 17 мая 2018

Ваш синтаксис неправильный, необязательные аргументы не передаются с ||, разделяющим их. Вместо этого я бы рекомендовал использовать 2 входа:

  1. Введите значение, которое вы хотите проверить
  2. Введите, какой это «тип» значения, в зависимости от того, какой обратный вызов запущен.

Функция будет выглядеть примерно так:

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
...