在 MATLAB 中与分数值相交运算

Intersect operations with fractional values in MATLAB

我想与一些小数值相交:

frac_value = intersect (find(xmin > 0) , find(xmin < 1))

其中 xmin 是一个大的分数值向量。我打印了 xmin 值直到 0.16f,其中一些显示值 0.0000000000000000,但 frac_value 返回它的位置。我不知道为什么。我怎样才能完美地获得分数值的位置?

如有任何帮助,我们将不胜感激。

你写的代码有点乱。使这一点更清楚的一种方法是:

frac_value = find(xmin > 0 & xmin < 1);

您实际上是在寻找 xmin 指数 ,它们都大于 0 且小于 1。而不是使用 intersect,只需使用 find


如果你想找到这些值所在的位置,那么上面的代码是完全可以接受的。但是,由于 post 的标题,我怀疑这不是您想要的。如果你想找到实际分数值,你需要索引xmin而不是frac_value

values = xmin(frac_value);

但是,我根本不会在这里使用 findintersect。更有效和更简单的是使用 logical 索引而不使用 findintersect (我认为这更快 performance-wise):

values = xmin(xmin > 0 & xmin < 1);

values 现在应该包含介于 0 和 1 之间的 xmin 的值,而不是它们的位置。