我正在为我的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
答案 0 :(得分:0)
您的语法错误,可选参数不会与||
分开传递。相反,我建议使用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