Using ismember with some margin

5 次查看(过去 30 天)
Reuben Addison
Reuben Addison 2023-5-3
编辑: Jon 2023-5-3
I asked a question yesterday and I got some good answers but there was a twist to my problem want to use a subset of number to find the index in a bigger set, my smaller set has some margin of error +/- 0.001
eg bigger set BS = [2.33, 4.551, 5.88, 3.98, 4.661, 7.98, 2.331, 9.55]
smaller set SS = [4.55 4.66 7.99]
I want to use the smaller set (SS) to pick the index of its location in the bigger set (BS)
I tried using find, ismembertol but not working well
I will be happy to figure this out
  1 个评论
Jon
Jon 2023-5-3
Would be better to preserve the history and responses so far to continue your original post with this as a comment, rather than opening up a new question.

请先登录,再进行评论。

回答(2 个)

Walter Roberson
Walter Roberson 2023-5-3
ismembertol by default uses relative tolerances. To use absolute tolerance with it you need to set the relative portion to 1 and use one of the named options to set the margin to the absolute value you want.
  1 个评论
Walter Roberson
Walter Roberson 2023-5-3
Sorry details were slightly wrong, see https://www.mathworks.com/help/matlab/ref/ismembertol.html#bup2c1a

请先登录,再进行评论。


Jon
Jon 2023-5-3
编辑:Jon 2023-5-3
You can use ismembertol for this
SSnoisy = SS + randn(size(SS))*0.01
idx = find(ismembertol(BS,SSnoisy,0.05))

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

产品


版本

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by