C和Matlab中的浮点问题

时间:2011-05-17 17:45:07

标签: matlab floating-point precision mex

嘿那里, 我在matlab-mex文件中有浮点问题,我得到的数值为10 ^( - 12)到10 ^( - 13)......有没有'脏'的方法来解决它们至少设置这些值如果它们如此小,计算后为零? 谢谢!

2 个答案:

答案 0 :(得分:2)

如果它是一个数组,你可以这样做:

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

(为了清晰起见,编辑添加abs() - 感谢nimrodm)

答案 1 :(得分:1)

不确定这是否是您正在寻找的(我想问题是您是否希望在mex文件中完成此操作),但我的诀窍是运行逻辑操作。假设加载的mex矩阵是X

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