[matlab/octave] détecter les "différences" d'incr. ds un vecteur

Fermé
Swiss Knight Messages postés 1956 Date d'inscription samedi 22 novembre 2008 Statut Membre Dernière intervention 27 juillet 2016 - 19 déc. 2012 à 00:25
Salut,

j'aimerai faire un truc tout bête : détecter les valeurs qui sortent de l'ordinaire dans un vecteur mais je ne vois pas bien comment m'y prendre.

Par exemple, dans le vecteur suivant où l'incrémentation est de 3 à chaque "pas"
x = [1,4,7,10,13,16,19,...,70,73,77,81,84,87...etc]

on voit que de 73 à 77 et de 77 à 81, les valeurs augmentent de 4 unités au lieu d'augmenter de 3 comme partout ailleurs.
J'aimerai donc détecter la position correspondant à cette "erreur", i.e. la position du nombre 77.

Je suis parti sur un :
find(diff(x)~=3)

ici mais ça me "trouve" la position précédant celle qui ne va pas en plus de celle qui ne va pas.
Vous allez me dire, c'est normal, la "courbe" change déjà de courbure au point précédent, donc il y a une valeur différente de 3 pour la dérivée.

Alors : existe-t-il une autre façon de faire où est-ce la seule ?

Question bonus pour les linuxiens :
peut-on faire la même chose directement en bash ?

Merci.
A voir également: