OVH Cloud OVH Cloud

Recherche de Maxima

50 réponses
Avatar
HRV
Bonjour,

Je cherche =E0 identifier deux maximums dans une m=EAme plage
de donn=E9e. Ces deux maximum n'ont pas n=E9cessairement la
m=EAme valeur. Comment faire ?

D'avance merci

10 réponses

1 2 3 4 5
Avatar
jps
chante, beau merle...
jps

"Pierre CFI [mvp]" a écrit dans le message de
news:
../...
en fait tu avais raison, remarque je préfére aussi réver à des courbes
agréables, qu'à des chiffres. Je suis à l'opposé de > jps :o))


Avatar
twinley
Slt,

6
7
8
7
6
5
6
7
8
9
10
11
12
11
10
9

dans cette suite comment identifier que 12 est un sommet et que 8 est un
autre sommet
Grande.Valeur trouve facilement 12 avec le rang 1 mais il faut mettre
rang 5 pour trouver 8, hors pour trouver 5 il faut tâtonner.
Et pour compliquer la suite est variable en amplitude et en temps
Pas si simple

à+twinley

ru-th wrote:
Salut

as-tu regarder du côté de
grande.valeur(plage;k) k égalant 1 ou 2
dans ton cas

a+
rural thierry
"HRV" a écrit dans le message de news:
1c1601c4d788$1b241490$
Bonjour,

Je cherche à identifier deux maximums dans une même plage
de donnée. Ces deux maximum n'ont pas nécessairement la
même valeur. Comment faire ?

D'avance merci




Avatar
Gilgamesh
Il y a quand même un problème théorique à éclaircir avant de s'attaquer
au code.

Prenons la série

50
51
53
60
59
56
58
52
49

60 est le 1e maximum, pas de prob

Quel est le second pour toi ? le 59 situé juste après le 60 ? Ou le 58
encadré par 56 et 52 ? Si tu définis un maxima comme encadré par 2
valeures inférieures, alors c'est le 58.

Maintenant est ce que 3 valeurs suffisent à déterminer un maximum ?
Quelle est la "longueur d'onde" minimal d'un maxima. Au minimum c'est 3
: dès lors que 3 valeurs présentent une valeur centrale encadrée par 2
valeurs inférieures, alors c'est un maxima. Mais on peut augmenter cette
longueur d'onde, en disant par exemple qu'il faut 3 valeurs croissantes,
la valeur centrale maxi puis 3 valeurs décroissantes, etc. Il faut bien
le préciser. Après il s'agit simplement d'examiner de façon "glissante"
toutes les plages de N valeurs qui se succèdent dans ta série, de
stocker dans un coin les maxima successifs qui se présentent et ensuite
de prendre les 2 plus grands.

a+





.../...
je cale sur ce pb depuis longtemps.
En amplitude, il faut déterminer ce qui caractérise le sommet, càd un
retour de 2% par exemple ou 5% ou autre chose.
En temps ( sur l'axe X ) il faut tenir compte du nombre de données sur
lesquels on doit chercher. On peut avoir 2 sommets sur 15 données mais
aussi sur 150 données. Seul un travail itératif doit donner une solution
acceptable mais cela bouffe du temps. Et si on est en temps réel, une
solution au bout de 15 minutes de calcul, n'est pas toujours acceptable.
Voyons ce que dise les eminents contributeurs...

twinley


wrote:

Bonjour Twinley

Tu as tout compris. C'est exactement le problème.
Rechercher deux sommets de hauteur indépendante et faire
apparaître ceux ci dans deux cellules différentes.

Merci d'avance


-----Message d'origine-----
Bonjour HRV

Tu veux identifier dans une courbe, un double sommets



indépendamment de

l'amplitude et de la durée ?
Le double sommets peut être à la même hauteur, mais le



premier maxi peut

être plus haut que le deuxième et prévoir l'inverse, le



premier maxi est

plus bas que le deuxième.
C'est cela ? Si tu pouvais préciser
merci

twinley


HRV wrote:

Bonjour,

Je cherche à identifier deux maximums dans une même plage
de donnée. Ces deux maximum n'ont pas nécessairement la
même valeur. Comment faire ?

D'avance merci



.








Avatar
Pierre CFI [mvp]
qu'est ce que tu crois que je fais sur mon arbre perché à me geler ? pas de merlette en vue :o))

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"jps" a écrit dans le message de news:%23TukY$
chante, beau merle...
jps

"Pierre CFI [mvp]" a écrit dans le message de
news:
../...
en fait tu avais raison, remarque je préfére aussi réver à des courbes
agréables, qu'à des chiffres. Je suis à l'opposé de > jps :o))





Avatar
twinley
Bonjour Gilgamesh

c'est 58 qu'il faut trouver.
tu as raison il y a un sérieux travail d'analyse avant de coder.
Même 3 points pour identifier un pivot ne couvre pas tous les cas,
parfois il faut 5 points.
Ou bien il faut se fixer un retour en pourcentage ou en unité
d'amplitude pour dire que c'est un sommet.
L'oeil trouve facilement mais avec un algorithme c'est plus coton.

twinley


Gilgamesh wrote:
Il y a quand même un problème théorique à éclaircir avant de s'attaquer
au code.

Prenons la série

50
51
53
60
59
56
58
52
49

60 est le 1e maximum, pas de prob

Quel est le second pour toi ? le 59 situé juste après le 60 ? Ou le 58
encadré par 56 et 52 ? Si tu définis un maxima comme encadré par 2
valeures inférieures, alors c'est le 58.

Maintenant est ce que 3 valeurs suffisent à déterminer un maximum ?
Quelle est la "longueur d'onde" minimal d'un maxima. Au minimum c'est 3
: dès lors que 3 valeurs présentent une valeur centrale encadrée par 2
valeurs inférieures, alors c'est un maxima. Mais on peut augmenter cette
longueur d'onde, en disant par exemple qu'il faut 3 valeurs croissantes,
la valeur centrale maxi puis 3 valeurs décroissantes, etc. Il faut bien
le préciser. Après il s'agit simplement d'examiner de façon "glissante"
toutes les plages de N valeurs qui se succèdent dans ta série, de
stocker dans un coin les maxima successifs qui se présentent et ensuite
de prendre les 2 plus grands.

a+





.../...
je cale sur ce pb depuis longtemps.
En amplitude, il faut déterminer ce qui caractérise le sommet, càd un
retour de 2% par exemple ou 5% ou autre chose.
En temps ( sur l'axe X ) il faut tenir compte du nombre de données sur
lesquels on doit chercher. On peut avoir 2 sommets sur 15 données mais
aussi sur 150 données. Seul un travail itératif doit donner une
solution acceptable mais cela bouffe du temps. Et si on est en temps
réel, une solution au bout de 15 minutes de calcul, n'est pas toujours
acceptable.
Voyons ce que dise les eminents contributeurs...

twinley


wrote:

Bonjour Twinley

Tu as tout compris. C'est exactement le problème.
Rechercher deux sommets de hauteur indépendante et faire
apparaître ceux ci dans deux cellules différentes.

Merci d'avance


-----Message d'origine-----
Bonjour HRV

Tu veux identifier dans une courbe, un double sommets




indépendamment de

l'amplitude et de la durée ?
Le double sommets peut être à la même hauteur, mais le




premier maxi peut

être plus haut que le deuxième et prévoir l'inverse, le




premier maxi est

plus bas que le deuxième.
C'est cela ? Si tu pouvais préciser
merci

twinley


HRV wrote:

Bonjour,

Je cherche à identifier deux maximums dans une même plage
de donnée. Ces deux maximum n'ont pas nécessairement la
même valeur. Comment faire ?

D'avance merci




.










Avatar
RaMa
Bonjour
un truc comme ça?

=INDEX(MaPlaj;EQUIV(GRANDE.VALEUR(MaPlaj;2);MaPlaj;FAUX))
Salutations
RaMa

"HRV" a écrit dans le message de news:
022a01c4d78e$b5164540$
Salut

MAlheureusement cette fonction n'est pas bonne car vu que
je cherche des maxima locaux il est possible que le point
juste à coté du premier maximum soit plus grand que que les
second maximum.

A+
HRV

-----Message d'origine-----
Salut

as-tu regarder du côté de
grande.valeur(plage;k) k égalant 1 ou 2
dans ton cas

a+
rural thierry
"HRV" a écrit dans
le message de news:

1c1601c4d788$1b241490$
Bonjour,

Je cherche à identifier deux maximums dans une même plage
de donnée. Ces deux maximum n'ont pas nécessairement la
même valeur. Comment faire ?

D'avance merci


.



Avatar
twinley
Bonjour Rama

Pas tout à fait.

Le k qui est mis à 2 trouve la deuxième valeur immédiatement inférieure
au maxi ( dans mon exemple il trouve 11 car 12 est le maxi)
Il ne peut pas trouver 8 qui est un autre sommet.
merci pour la suggestion

twinley


RaMa wrote:
Bonjour
un truc comme ça?

=INDEX(MaPlaj;EQUIV(GRANDE.VALEUR(MaPlaj;2);MaPlaj;FAUX))
Salutations
RaMa

"HRV" a écrit dans le message de news:
022a01c4d78e$b5164540$
Salut

MAlheureusement cette fonction n'est pas bonne car vu que
je cherche des maxima locaux il est possible que le point
juste à coté du premier maximum soit plus grand que que les
second maximum.

A+
HRV


-----Message d'origine-----
Salut

as-tu regarder du côté de
grande.valeur(plage;k) k égalant 1 ou 2
dans ton cas

a+
rural thierry
"HRV" a écrit dans


le message de news:

1c1601c4d788$1b241490$
Bonjour,

Je cherche à identifier deux maximums dans une même plage
de donnée. Ces deux maximum n'ont pas nécessairement la
même valeur. Comment faire ?

D'avance merci


.








Avatar
twinley
.../...

j'ai vu un logiciel qui faisait cela avec une macro.
Mais je n'ai pas vu le code de la macro.
Le logiciel travaillait par itération et il affichait une droite pour
chaque calcul qu'il faisait sur chaque donnée.
Il moulinait pendant 20 à 30 secondes et remplissait la feuille de droite.
Puis il ne gardait d'une droite qui reliait deux sommets et il ne se
trompait jamais.

twinley

RaMa wrote:
Bonjour
un truc comme ça?

=INDEX(MaPlaj;EQUIV(GRANDE.VALEUR(MaPlaj;2);MaPlaj;FAUX))
Salutations
RaMa

"HRV" a écrit dans le message de news:
022a01c4d78e$b5164540$
Salut

MAlheureusement cette fonction n'est pas bonne car vu que
je cherche des maxima locaux il est possible que le point
juste à coté du premier maximum soit plus grand que que les
second maximum.

A+
HRV


-----Message d'origine-----
Salut

as-tu regarder du côté de
grande.valeur(plage;k) k égalant 1 ou 2
dans ton cas

a+
rural thierry
"HRV" a écrit dans


le message de news:

1c1601c4d788$1b241490$
Bonjour,

Je cherche à identifier deux maximums dans une même plage
de donnée. Ces deux maximum n'ont pas nécessairement la
même valeur. Comment faire ?

D'avance merci


.








Avatar
JpPradier
Bonjour à tous

une solution possible avec une colonne supplémentaire :
Tester si la valeur précédente et la suivante sont inférieures. Si oui renvoie la valeur, si non
renvoie Zero :

=SI(ET(A1<A2;A3<A2);A2;0)

ensuite avec la fonction grande.valeur() on a les deux plus hauts.

j-p
Avatar
twinley
Salut JpP

C'est ce que je disait plus haut. La détection d'un point tournant par
trois points a sa limite. Alors pour éviter certain cas, on passe à 5
points ( 2 avant et 2 après le plus haut) et ainsi de suite. En fait on
n'est jamais satisfait car il y a toujours des fausses figures qui ne
donnent pas les deux vrais sommets de vagues que l'oeil identifie
instantanément.
La longueur d'onde pour reprendre le terme de Gilgamesh, complexifie la
chose. S'appuyer sur des reconnaissances de formes avec trois points, ne
donnera pas les deux vrais sommets. Il y aura énormément d'erreurs.

Hormis une recherche systématique de tous les points deux à deux, avec
une mise en mémoire puis une élimination des paires inférieures, je ne
vois pas.
Mais c'est pas parce que je ne vois pas que d'autres n'ont pas une
solution élégance et révolutionnaire.

cordialement

à+twinley

JpPradier wrote:
Bonjour à tous

une solution possible avec une colonne supplémentaire :
Tester si la valeur précédente et la suivante sont inférieures. Si oui renvoie la valeur, si non
renvoie Zero :

=SI(ET(A1<A2;A3<A2);A2;0)

ensuite avec la fonction grande.valeur() on a les deux plus hauts.

j-p



1 2 3 4 5