2,371 views (last 30 days)

Cam Salzberger
on 18 Oct 2017

Hello Farhan,

You can use find to get the index when an expression is true, and "==" to get that logical array. Something like this should work:

idx = find(z == -2);

Note, however, that this will only do an absolute comparison. If you wanted to find with some kind of tolerance, you could do:

idx = find(abs(z+2) < 0.001);

Also note that if you are then going to use this index for indexing into the array, it's usually more efficient to just use the logical array to index:

z(z == -2) = NaN; % Or something

Hope this helps!

-Cam

Stephen Cobeldick
on 18 Oct 2017

@Farhan Omar: here are the 201st and 21st elements:

>> z(21)

ans = -0.20000

>> z(201)

ans = -2

Note that Star Strider's answer using ismembertol will be much more robust than this answer.

Sign in to comment.

Star Strider
on 18 Oct 2017

Edited: Star Strider
on 18 Oct 2017

The ismember (or perhaps preferably ismembertol) function is your friend here.

EDIT — The ‘-2’ index will be 21 if the step in ‘z’ is ‘-0.1’ rather than ‘-0.01’:

z=[0:-0.1:-16];

[~,idx] = ismembertol(-2, z, 1E-8)

idx =

21

Star Strider
on 18 Oct 2017

The ismembertol function checks to see whether the first argument (here -2) is a member of the set in the second argument (here ‘z’), and returns the index/indices in the second argument that match. Since floating-point calculations (including those involved in the colon operator calculations) can produce values that are not exactly -2 (in this instance), the third ‘tolerance’ argument gives a range of values around -2 that would meet the criterion. The find and ismember functions match the condition exactly, while ismembertol matches within a tolerance.

See: Why is 0.3 - 0.2 - 0.1 (or similar) not equal to zero? (link) for a full explanation of the reason ismembertol may be the preferred function, if there is a reason to suspect that no element of ‘z’ is exactly equal to -2.

Sign in to comment.

Sign in to answer this question.

Opportunities for recent engineering grads.

Apply Today
## 0 Comments

Sign in to comment.