一、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语句等等。