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

조회 수: 31 (최근 30일)
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)?

채택된 답변

Daniel Pollard
Daniel Pollard 2020년 12월 14일
편집: Daniel Pollard 2020년 12월 14일
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
Rik
Rik 2020년 12월 14일
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 2020년 12월 15일
편집: Adnan Hayat 2020년 12월 15일
Thank you both, I got my issue resolved :)

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by