Matlab中循环时的数值数据验证

于尔根·库斯基耶(Jurgen Cuschieri)

我有一个函数usenum

function TF = usenum(x)

   TF = false;
   if ~isnumeric(x)
       h = msgbox('Input is not numeric');
   elseif (x <= 0)
       h = msgbox('Input must be > 0');
   else
       TF = true;
   end

我在主菜单中得到用户输入:

answer = inputdlg(prompt,dlg_title,num_lines,def);

inputdlg有2个值,可以用{1}和{2}进行索引

我想等待用户输入一个值,该值必须是一个数字且大于0。如果他没有输入,我想输出相应的消息并使他继续输入,直到他输入正确为止,或关闭inputdlg对话框。

我正在尝试这样的事情:

condition = false;
while ~condition
    answer = inputdlg(prompt,dlg_title,num_lines,def);
    numOfTracks = answer{1};
    bpmRange = answer{2};
    condition = usenum(numOfTracks);
end

我想说的是,当condition = false时,即当输入不是数字或不大于0时,请继续获取用户输入。一旦用户输入了有效数字,则该条件将变为真,而while将终止。但是,inputdlg会继续为输入打开,而阻止它的唯一方法是关闭它(无限循环)。我怎样才能实现自己想要的?

提前致谢

破坏

您的循环似乎正确。以下测试提供了usenum功能的结果

>> usenum('')
ans =
     0
>> usenum(-1)
ans =
     0
>> usenum(1)
ans =
     1

usenum就键入而言,您的函数是正确的,但是我相信您的输入始终以字符串形式给出,因为您是从对话框中获取用户输入的。相反,usenum如果您期望输入字符串,则应尝试按以下方式重新定义该函数str2double将其转换为双精度型,如果是文本,它将显示为NaN这就是isnan检查的目的,以检查其是否为文本。

function TF = usenum(x)
    % Default to false
    TF = false;
    x = str2double(x);
    % Check if digits
    if isnan( x )
        h = msgbox('Input is not numeric');
    elseif (x <= 0)
        h = msgbox('Input must be > 0');
    else
        TF = true;
    end

这是新功能的结果。

>> usenum('a')
ans =
     0
>> usenum('-1')
ans =
     0
>> usenum('1')
ans =
     1

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MATLAB中数值数据的Laplace变换

来自分类Dev

用于将常数值循环馈入MATLAB中的fsolve

来自分类Dev

用于将常数值循环馈入MATLAB中的fsolve

来自分类Dev

整数值的数据注释验证

来自分类Dev

如何在MATLAB中的for循环内的CSV文件的指定位置保存数值?

来自分类Dev

Matlab中的数值计算问题

来自分类Dev

在Matlab中从符号到数值

来自分类Dev

在循环中创建时,Crystal Report 不会使用更新的参数值/数据源

来自分类Dev

数据验证列表取决于数值

来自分类Dev

Matlab保存循环数据

来自分类Dev

重新循环时保留整数值

来自分类Dev

在MATLAB中连接多个混合数值类型值时强制数组保持类型为'double'

来自分类Dev

从MATLAB仅将数值数据从文本文件中提取到矩阵中

来自分类Dev

当我在MATLAB中循环绘图时如何给不同的颜色?

来自分类Dev

Matlab指南:将循环中的数据存储在向量中

来自分类Dev

在MatLab中的“ for”循环内将数据追加到消息框

来自分类Dev

使用循环对数据进行分组(MATLAB 中的信号处理)

来自分类Dev

数据验证中的数据验证

来自分类Dev

如何在jQuery中验证整数值

来自分类Dev

vb.net中的InputBox数值验证

来自分类Dev

Dart Polymer模板中的for循环数值

来自分类Dev

从for循环的索引中得出指数值

来自分类Dev

MATLAB中整数值矩阵的乘法

来自分类Dev

在MATLAB中数值求解双积分

来自分类Dev

MATLAB中的符号积分与数值积分

来自分类Dev

更改默认数值类型以在Matlab中浮动

来自分类Dev

网页抓取时如何获取数值数据?

来自分类Dev

在Matlab中避免for循环

来自分类Dev

在Matlab中避免for循环