Borrar filtros
Borrar filtros

How to find the index of the first and last non-zero value of a vector ?

21 visualizaciones (últimos 30 días)
Hello, I have a vector suppose a function f(x), such that
f(x)= ...0,0,0,0,0,0,0,0,5,6,7,4,3,5,6,7,8,0,0,0,0,0,0,0... and
x = 1,2,3,4,5,....
I don't know which command can I use to find those values of x for which the values of f(x) are 5 and 8 (i.e the first and last non-zero values)?

Respuesta aceptada

Daniel Pollard
Daniel Pollard el 14 de Dic. de 2020
Editada: Daniel Pollard el 14 de Dic. de 2020
The built in command find sounds like what you need. The code could look something like
f = ...0,0,0,0,0,0,0,0,5,6,7,4,3,5,6,7,8,0,0,0,0,0,0,0...;
x_idx = find(f);
x = [x_idx(1), x_idx(end)];
where x is the positions of the first non-zero component and the last non-zero component.
Edit To correct a mis-type.
  7 comentarios
Rik
Rik el 14 de Dic. de 2020
Note that f_x=f(x);ind=[find(f_x,1,'first') find(f_x,1,'last')]; might be faster, as the JIT might be able to optimize this call.
Adnan Hayat
Adnan Hayat el 15 de Dic. de 2020
Editada: Adnan Hayat el 15 de Dic. de 2020
Thank you both, I got my issue resolved :)

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by