How can I compare vector`s values?

4 views (last 30 days)
Miro Mitev
Miro Mitev on 16 Aug 2016
Commented: Miro Mitev on 16 Aug 2016
I have a vector like on the figure bellow. I extracted the min and max values of it (A,B,C,D,E,F,G) and now I need to make a comparison of all the consecutive values and put the difference in another vector. In other words to find the difference between the values A with B; B with C etc. (named 1,2,3,4,5,6 on the figure).
And my code:
b=[1 2 3 4 5 6 7 8 9 8 7 6 5 4 5 6 7 8 9 10 7 4 3 2 1 4 7 8 9 7 6 5 4 3 4 5 6 7 8 3 2 1];
k=numel(b);
MIN=zeros(1,k);
MAX=zeros(1,k);
for i=3:k
if b(i-1)>b(i-2) && b(i-1)>b(i)
MAX(i-1)=b(i-1);
end
end
for i=3:k
if b(i-1)<b(i-2) && b(i-1)<b(i)
MIN(i-1)=b(i-1);
end
end
MIN=MIN(MIN~=0);
MAX=MAX(MAX~=0);

Accepted Answer

Thorsten
Thorsten on 16 Aug 2016
Edited: Thorsten on 16 Aug 2016
Index of extrema:
b = b(:);
idx = find(([b(1); b(1:end-1)] - b).*([b(2:end); b(end)] - b) > 0);
Difference between extrema
d = diff(b(idx));
  3 Comments
Thorsten
Thorsten on 16 Aug 2016
I added b = b(:) to convert b to a column vector.
Miro Mitev
Miro Mitev on 16 Aug 2016
Thank you! It is exactly what i was searching for.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!