C 和 Matlab 中的浮点问题

发布于 2024-11-07 11:55:04 字数 107 浏览 0 评论 0原文

嘿, 我的 matlab-mex 文件中有浮点问题,我得到的值大小为 10^(-12) 到 10^(-13)...是否有一种“肮脏”的方法来解决它们,至少设置这些值如果它们这么小,计算后为零? 谢谢!

Hey there,
I have floating point problems in my matlab-mex file where I get values at the magnitude 10^(-12) to 10^(-13)... Is there an 'dirty' way to solve them to at least set those values to zero after the computation if they are so small?
Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

无妨# 2024-11-14 11:55:04

如果它是一个数组,您可以执行以下操作:(

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

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

If it's an array, you could do something like:

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

(edited to add abs() for clarity—thanks nimrodm)

眼泪淡了忧伤 2024-11-14 11:55:04

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

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

Not sure if this is what you're looking for (I guess the question is do you want this to be done in the mex file, or not), but my trick is to run a logic operations. Say the loaded mex matrix is X

Xm = abs(X) > max_error;
X = Xm .* X;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文