我有一大堆值,全部或小于1,所以使用向上/向下舍入功能是没用的。无论如何我可以在这些非整数值上使用/ make'find'函数吗?
e.g。
ind=find(x,9.5201e-007)
FWIW所有值都在数组中以连续的顺序排列。
非常感谢!
答案 0 :(得分:2)
您使用的语法不正确。
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);
答案 1 :(得分:0)
当我想在一定范围内找到实数时,我通常将它们全部舍入到那个容忍度,然后做我的发现,排序,等等。
如果x
是我的真实数字,我会做类似
xr = 0.01 * round(x/0.01);
然后xr都是.01的倍数,即四舍五入到最接近的.01。然后我可以做
t = find(xr=9.22)
然后x(t)
将是x
在9.2144444444449和9.225之间的每个值。
答案 2 :(得分:0)
从你的评论中听起来你想要的是
`[b,m,n] = unique(x,'first');
然后b
将是x中元素的排序版本,没有重复,
x = b(n);
因此,如果n
中有4个1',则表示值b(1)
在x
中显示4次,其在x
中的位置位于{{ 1}}。