在MATLAB中使用小数值相交运算

时间:2015-05-09 20:33:37

标签: matlab octave

我想要交叉一些小数值:

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

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

对此有任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

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

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

您实际上在做的是找到xmin索引,它们都大于0且小于1.而不是使用intersect,只需使用{{1 }}。

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

frac_value

但是,我根本不会在这里使用values = xmin(frac_value); find。更有效和更简单的是使用逻辑索引而不使用intersectfind(我认为这会更快地提高性能):

intersect

values = xmin(xmin > 0 & xmin < 1); 现在应该包含介于0和1之间的values值,而不是它们的位置。