如何在MATLAB中使用find()来查找小数

时间:2017-01-12 09:55:25

标签: matlab find

我得到一个包含两列的表 - 一个是P_in,另一个是P_out:

P_in  = table(:,1);
P_out = table(:,2);

我也得到了P_in的一个子集,我称之为P_in2。我想找到属于P_in2的P_out的对应值。

我试过find():

P_out2_idx = find(table(P_in2,2));
P_out2     = table(P_out2,idx,2);

但find()只能处理整数。然而,我的表不显示整数,而是小数。以下是表格中的三行:

-13.02    49.6
-12.52    49.9
-12.02    50.18

因此,即使舍入P_in2值也不会起作用。

1 个答案:

答案 0 :(得分:2)

如果您的数字是整数,则使用ismember可以找到多个索引。对于浮点数,更安全的方法是使用ismembertol

isInP_in2 = ismembertol(P_in, P_in2, eps);
P_out2 = P_out(isInP_in2);

返回的数组isInP_in2是一个大小为P_in的逻辑数组,在找到true中的值的索引处为P_in2false否则。

第三个参数是用于比较的容差(这里我们采用浮点相对精度eps)。例如,使用find搜索单个索引将完成:

idx = find(abs(P_in - P_in2(1)) < eps);