首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对非整数MATLAB数组值使用find

问对非整数MATLAB数组值使用find
EN

Stack Overflow用户
提问于 2012-06-19 22:13:14
回答 3查看 5K关注 0票数 0

我有一个巨大的值数组,所有的值都小于1,所以使用向上/向下取整函数是无用的。有没有什么办法可以在这些非整数值上使用/生成'find‘函数?

例如:

代码语言:javascript
复制
ind=find(x,9.5201e-007)

FWIW所有值在数组中都是按递增顺序排列的。

非常感谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-19 22:21:23

您使用的语法不正确。

代码语言:javascript
复制
find(X,k)

返回k非零值,这就是k必须为整数的原因。你想要的

代码语言:javascript
复制
find(x==9.5021e-007);
%#   ______________<-- logical index: ones where condition is true, else zeros
%#   the single-argument of find returns all non-zero elements, which happens
%#   at the locations of your value of interest.

请注意,这需要是浮点数的精确表示,否则它将失败。如果您需要公差,请尝试以下示例:

代码语言:javascript
复制
tol = 1e-9; %# or some other value
val = 9.5021e-007;
find(abs(x-val)<tol);
票数 2
EN

Stack Overflow用户

发布于 2012-06-19 22:33:52

当我想要在某个容差范围内找到实数时,我通常会将它们都舍入到该容差级别,然后进行查找、排序等操作。

如果x是我的真实数字,我会这样做

代码语言:javascript
复制
xr = 0.01 * round(x/0.01);

那么xr都是.01的倍数,即四舍五入到最近的.01。然后我就可以做

代码语言:javascript
复制
t = find(xr=9.22) 

然后x(t)将是x的每个值,介于9.2144444444449和9.225之间。

票数 0
EN

Stack Overflow用户

发布于 2012-06-20 13:41:46

从你的评论来看你想要的是

代码语言:javascript
复制
`[b,m,n] = unique(x,'first');

那么b将是x中没有重复的元素的排序版本,并且

代码语言:javascript
复制
x = b(n);

因此,如果n中有4个‘1’,这意味着值b(1)在x中出现了4次,而它在x中的位置是find(n==1)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11102862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档