2016-11-08 82 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而不是第一行代碼。

相關問題