0
嘿, 我有我的matlab-mex文件中的浮点问题,其中我得到的值在10 ^( - 12)到10 ^( - 13)一个'肮脏'的方法来解决它们至少在计算后将这些值设置为零,如果它们太小的话? 谢谢!C和Matlab中的浮点问题
嘿, 我有我的matlab-mex文件中的浮点问题,其中我得到的值在10 ^( - 12)到10 ^( - 13)一个'肮脏'的方法来解决它们至少在计算后将这些值设置为零,如果它们太小的话? 谢谢!C和Matlab中的浮点问题
如果它是一个数组,你可以这样做:
small_inds = find(abs(array) < 10^-12);
array(small_inds) = zeros(length(small_inds),1);
(编辑追加abs()
为清楚起见,感谢nimrodm)
不知道这是你在找什么(我想问题是你想这是在mex文件中完成,或者不),但我的诀窍是运行一个逻辑操作。说装MEX矩阵X
Xm = abs(X) > max_error;
X = Xm .* X;
可能会更好使用abs(数组)。 此外 - 你可能想要保持相对准确而不是绝对错误,所以使用像max(array(:))* 10^-12之类的东西。 – nimrodm 2011-05-17 18:29:41
是的,谢谢,这是一个相当'肮脏'的方法,或者这是真的'好'在计算中将值设置为零,这是非常小的10^-12或10^-13! – tim 2011-05-17 18:45:37
我会说这取决于应用程序。如果你有一个长的ARMA滤波器,这些系数可能非常重要。 – whlteXbread 2011-05-17 18:54:33