closest value to zero excluding the first one?

If given a long vector of values. How can I find the index of the closest value to zero excluding the first value of the vector out of our list of stuff to search for

2 Comments

I am attaching an example variable and the answer your code should result in should be 175 or the 174 index.
I = find(diff(dis_y>=0),1);

Sign in to comment.

 Accepted Answer

"dis_y" being the variable:
I = find(diff(dis_y>=0),1);

1 Comment

That is NOT your question asks for, that is first consecutive points where 0 is cross from positive to negative.

Sign in to comment.

More Answers (2)

out of our list of stuff to search for
?
v = [-0.1 2 4 -0.5 8];
[~,i] = min(abs(v(2:end)))
i = 3
v(i+1)
ans = -0.5000

3 Comments

"out of our list of stuff to search for" <= He's searching FOR the index, so I think he really meant "out of our list of stuff to search", which is basically what @Torsten did. (No problem - non native English speakers probably don't know subtleties like that) The index would be
index = i+1;
hmm I dont think this works. For example, I attached this variable here. The answer to my question should be 175 or the 174 index. But with this code you have I do not get that.
Actually I found the solution: I = find(diff(dis_y>=0),1);

Sign in to comment.

load('var.mat')
[~,I] = sort(abs(dis_y), 'ascend');
% Closest value to 0:
dis_y(I(1))
ans = 2.3761e-05
% Second closest value to 0:
dis_y(I(2))
ans = -0.0014

2 Comments

This is still not giving me 175 or 174.
I = find(diff(dis_y>=0),1);

Sign in to comment.

Products

Release

R2021a

Community Treasure Hunt

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

Start Hunting!