matlab中inf的含义(Matlab笔记15)

一、inf的基本概念

inf是matlab中的一个特殊的值,表示正无穷或负无穷。

如果一个数除以零,结果为正无穷或负无穷时,matlab会自动用Inf或者-inf来表示这个结果,比如1/0得到的结果就是inf。

当一个数字超过matlab支持的数据类型范围时,也会自动用Inf或-inf来表示这个数字。


>>realmax
ans =
  1.7977e+308

>>2*realmax
ans =
  Inf

注意:NaN(Not-a-Number)也是一个特殊值,表示无法表示的或者未定义的值,比如inf-inf的结果就是NaN。

二、Inf在数学运算中的应用

inf在数学运算中有一些特殊的应用。

1、Inf的比较

当一个数与Inf进行比较时,结果并不是false。比较结果取决于这个数的正负。


>>1<Inf
ans = 
  logical 1

>>-1<Inf
ans =
  logical 1

>>Inf<1
ans =
  logical 0

>>Inf<-1
ans =
  logical 0

2、Inf的算术运算

Inf参与算术运算也有特殊的规则。

当一个数与Inf相加减,结果还是Inf。


>>2+Inf
ans =
  Inf

>>3-Inf
ans =
  Inf

当一个数与Inf相乘除,结果变成Inf或-inf,取决于这个数的正负。


>>1*Inf
ans =
  Inf

>>-1*Inf
ans =
  -Inf

>>1/Inf
ans =
  0

>>-1/Inf
ans =
  -0

三、Inf在matlab编程中的应用

Inf在matlab编程中有许多应用。

1、数组初始化

利用Inf可以一次性初始化一个数组,比如创建一个3×3的矩形,其中每个元素都是正无穷:


a = Inf(3)
a =
    Inf  Inf  Inf
    Inf  Inf  Inf
    Inf  Inf  Inf

或者创建一个3×3的矩形,其中每个元素都是负无穷:


b = -Inf(3)
b =
    -Inf  -Inf  -Inf
    -Inf  -Inf  -Inf
    -Inf  -Inf  -Inf

2、代替if语句

在matlab中,大于或小于某个数值的值可以用true或false表示,利用Inf可以避免使用if语句。

下面的例子展示了利用Inf代替if语句。我们要找到一个向量中最小的正数。如果向量中没有正数,那么返回正无穷。


function x = get_min_pos(v)
  v(v <= 0) = Inf
  x = min(v)
end

当向量中有正数时:


>>get_min_pos([1,2,-3,-4])
ans = 
 1

当向量中没有正数时:


>>get_min_pos([-1,-2,-3,-4])
ans = 
 Inf

3、实现嵌套循环

利用Inf可以实现嵌套循环的语法,比如下面这个例子中,我们可以用三个for循环来遍历一个3维数组,而不必嵌套3层for循环。


a = rand(3,3,3);
for i = 1:Inf
  for j = 1:Inf
    for k = 1:Inf
      if i > size(a,1) || j > size(a,2) || k > size(a,3)
        break;
      end
      % do something here
    end
  end
end

四、总结

通过对matlab中Inf的探讨,我们可以看到Inf的运用非常广泛,比如可以用来表示正无穷和负无穷,可以用来做数组的初始化,可以代替if语句等等。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平