我得到一个包含两列的表 - 一个是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值也不会起作用。
答案 0 :(得分:2)
如果您的数字是整数,则使用ismember
可以找到多个索引。对于浮点数,更安全的方法是使用ismembertol
:
isInP_in2 = ismembertol(P_in, P_in2, eps);
P_out2 = P_out(isInP_in2);
返回的数组isInP_in2
是一个大小为P_in
的逻辑数组,在找到true
中的值的索引处为P_in2
,false
否则。
第三个参数是用于比较的容差(这里我们采用浮点相对精度eps
)。例如,使用find
搜索单个索引将完成:
idx = find(abs(P_in - P_in2(1)) < eps);