我有大量的值,全部或远小于 1,因此使用向上/向下舍入函数是无用的。无论如何我可以在这些非整数值上使用/制作“查找”功能吗?
例如
ind=find(x,9.5201e-007)
FWIW 所有值都在数组中按顺序排列。
非常感激!
我有大量的值,全部或远小于 1,因此使用向上/向下舍入函数是无用的。无论如何我可以在这些非整数值上使用/制作“查找”功能吗?
例如
ind=find(x,9.5201e-007)
FWIW 所有值都在数组中按顺序排列。
非常感激!
您使用的语法不正确。
find(X,k)
返回k
非零值,这就是为什么k
必须是整数。你要
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.
请注意,这需要是浮点数的精确表示,否则会失败。如果您需要公差,请尝试以下示例:
tol = 1e-9; %# or some other value
val = 9.5021e-007;
find(abs(x-val)<tol);
从您的评论中听起来您想要的是
`[b,m,n] = unique(x,'first');
thenb
将是 x 中元素的排序版本,没有重复,并且
x = b(n);
因此,如果 中有 4 个 '1' n
,则表示该值b(1)
出现了x
4 次,并且它在x
中的位置find(n==1)
。
当我想在某个容差范围内找到实数时,我通常会将它们全部四舍五入到该容差水平,然后进行查找、排序等。
如果x
是我的真实数字,我会做类似的事情
xr = 0.01 * round(x/0.01);
那么 xr 都是 0.01 的倍数,即四舍五入到最接近的 0.01。然后我可以做
t = find(xr=9.22)
然后x(t)
将是x
9.2144444444449 和 9.225 之间的每个值。