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

 Réponse acceptée

Thorsten
Thorsten le 16 Août 2016
Modifié(e) : Thorsten le 16 Août 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 commentaires

Miro Mitev
Miro Mitev le 16 Août 2016
Modifié(e) : Miro Mitev le 16 Août 2016
It gives me this (for the index of extrema):
Error using vertcat
Dimensions of matrices being concatenated are not consistent.
Thorsten
Thorsten le 16 Août 2016
I added b = b(:) to convert b to a column vector.
Miro Mitev
Miro Mitev le 16 Août 2016
Thank you! It is exactly what i was searching for.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Language Fundamentals dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by