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

indexingmatlab arrayvector

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)?

Best Answer

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.