2011-05-17 59 views
0

嘿, 我有我的matlab-mex文件中的浮點問題,其中我得到的值在10 ^( - 12)到10 ^( - 13)一個'骯髒'的方法來解決它們至少在計算後將這些值設置爲零,如果它們太小的話? 謝謝!C和Matlab中的浮點問題

回答

2

如果它是一個數組,你可以這樣做:

small_inds = find(abs(array) < 10^-12); 
array(small_inds) = zeros(length(small_inds),1); 

(編輯追加abs()爲清楚起見,感謝nimrodm)

+1

可能會更好使用abs(數組)。 此外 - 你可能想要保持相對準確而不是絕對錯誤,所以使用像max(array(:))* 10^-12之類的東西。 – nimrodm 2011-05-17 18:29:41

+0

是的,謝謝,這是一個相當'骯髒'的方法,或者這是真的'好'在計算中將值設置爲零,這是非常小的10^-12或10^-13! – tim 2011-05-17 18:45:37

+1

我會說這取決於應用程序。如果你有一個長的ARMA濾波器,這些係數可能非常重要。 – whlteXbread 2011-05-17 18:54:33

1

不知道這是你在找什麼(我想問題是你想這是在mex文件中完成,或者不),但我的訣竅是運行一個邏輯操作。說裝MEX矩陣X

Xm = abs(X) > max_error; 
X = Xm .* X;