【问题标题】:Multiple conditions in IF statement (integer results only)IF 语句中的多个条件(仅限整数结果)
【发布时间】:2013-11-14 21:24:06
【问题描述】:

如何使 if 语句只识别方程的整数结果

例如:

For n=1:240
 a=a+1
 b=a/20

 %try number 1
 If b==1 | 2 | 3 | ... | 12;
 c=c+1 %does not work
 End

 %try number 2
 If b==isinteger(b);
 c=c+1 %does not work
 End

 %try number 3
 d=isinteger(b);
 If d==1;
 c=c+1 %does not work
 End
End

我只是 Matlab 的新手,所以请原谅这个问题的简单性。

【问题讨论】:

  • 请开始为您理解的部分编写有效代码:ifforend 都是小写的。请正确缩进所有代码,Matlab 的编辑器会自动为您执行此操作。

标签: matlab if-statement integer multiple-conditions


【解决方案1】:

你可以做的一件事是

abs(b-round(b))<1e-12

或类似的,测试b是否在整数的1e-12内。

如果要测试多个数字b,可以有一个向量b,然后

b(abs(b-round(b))<1e-12)

应该返回 b 的整数元素。

有一个名为isinteger 的 Matlab 命令,不要使用它,它用于确定变量的类型,您将使用与整数不同的数据类型的双精度数。只是需要注意的事情。

【讨论】:

  • 很抱歉我写了integer,而我的意思是isinteger。你在这方面是正确的,在代码中也是如此。它有效!
  • 但是我不明白为什么第一个选项不起作用(具有多个 OR 的那个)。
  • @user2993881 - 在 MATLAB 中你必须这样做 b==1 || b==2 || ... 但你可以这样做 any(b==(1:12))
  • 但您必须小心,因为数值精度可能会因为顺序不同而被评估为 false eps
  • @David - 你当然是对的。我只是在解释 MATLAB 语法,抛开数据类型的问题。
猜你喜欢
  • 2021-05-14
  • 2015-01-20
  • 2013-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-25
相关资源
最近更新 更多