2016-11-08 83 views
0

我有一个向量,说[1,2,710]。当我取exp([1,2,710])时,我得到ans = [2.7183,7.2891,Inf]。由于最终答案是一个非常大的数字,我想先检测它并将其重置为一个非常大的值,例如1e + 305。我使用isinf来帮助我,但isinf(ans)给出了全部0.我应该怎么做来解决这个问题?请注意,输入矢量可能会改变。如何检测矢量中的某些元素?

+2

你使用的是哪个版本?对于我在R2015a,R2013a和R2009中,'isinf(exp([1,2,710]))''返回'[0 0 1]'。而函数['isfinite'](https://mathworks.com/help/matlab/ref/isfinite.html)的工作原理与之相反:'isfinite(exp([1,2,710]))'=>'[ 1 1 0]'。我的猜测是'ans'不符合你的想法(你可能已经覆盖了它)。不要使用'ans'。给变量充分命名并对它们进行操作。 – Hoki

+0

我使用版本R2014a。让我再次检查一遍。谢谢你的帮助! –

+0

顺便说一下,在matlab中可以显示的最大数字是什么?我如何在matlab中获得这样的数字? –

回答

0

试试这个:

maximum_num = 99999; 

vec = [1,2,710]; 
expVec = exp(vec); 

expVec(expVec > maximum_num) = maximum_num; 

maximum_num商店,你让你的向量的最大值。所以如果你的工作是双重的,你可以简单地使用maximum_num= realmax而不是第一行代码。

相关问题