Discussions au sujet de NI LabVIEW

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

Recherche d'une valeur dans un tableau

Résolu !
Accéder à la solution

Bonjour,

J'utilise Labview lors de mon stage sur un logiciel de pilotage de gonio-photometre et je suis confronté à un problème que je ne comprend pas et que je n'arrive pas à résoudre.

Il s'agit de rechercher une valeur dans un tableau de DBL 1D en partant d'une valeur définie.     VI résumant la situation en pièce jointe (Labview version 2012).

La valeur que l'on défini au début sert de point de départ pour la recherche, puis on l'incrémente d'un certain pas pour continuer la recherche. Le but étant de trouver l'indice du chiffre qui dans le tableau est le plus proche de la valeur de départ.

Le programme sur lequel je travail impose un pas d'incrémentation de 0.01 et par exemple un chiffre de départ =  45.23   et un tableau  = [88.56, 97.56, 118.48, 95.23, 82.64].

Il fonctionne avec comme paramètres : chiffre de départ =  0  ;    tableau  = [88.56, 0.09, 118.48, 95.23, 82.64].
  
Mais il ne marche plus pour :                 chiffre de départ =  0  ;    tableau  = [88.56, 0.10, 118.48, 95.23, 82.64].

Je ne trouve pas la solution et cela m’empêche d'avancer, pouvez-vous m'aider ?

Merci d'avance.

Cordialement.

0 Compliments
Message 1 sur 7
4 175 Visites
Solution
Accepté par l'auteur du sujet C.Etienne

Etienne,

Je pense que le problème vient des arrondis ou approximations propres aux DBL.

Tu peux multiplier ton tableau par 100 puis convertir le résultat en I64. Et ainsi travailler uniquement avec des entiers, le programme devrait fonctionner correctement.

 

Je te présente une solution alternative pour rechercher la valeur la plus proche du nombre de départ (en excluant les nombres inférieurs)

valeur proche.png

Si tu veux prendre en compte aussi les nombres qui sont plus petits que ton nombre de départ, tu ne gardes que la fonction Min/max.

Cette solution a l'avantage de ne traiter le tableau qu'une seule fois et donc réduit l'utilisation du processeur

 

Est-ce que ça solutionne ton problème ?

Yddet

Message 2 sur 7
4 148 Visites

Salut Yddet, Oui ta solution fonctionne, c'est exactement ce qu'il me fallait.
Entre temps j'avais trouvé autre chose je le met là si jamais ça peut aider quelqu'un. Mais je vais garder ta solution ! Merci beaucoup. solution.PNG

0 Compliments
Message 3 sur 7
4 138 Visites

et ceci ? non ?

(positif ou négatif, pas de boucle)

J'ai testé, et il me semble que cela correspond au besoin. ("out" donne le nombre le plus proche de "in)

 

yyyyyy.png

Message 4 sur 7
4 119 Visites

Bonjour ouadji,

Oui, ta solution est plus simple et semble correspondre au besoin elle aussi

 

J'étais parti sur une solution plus compliquée car Etienne parlait de "pas d'incrémentation" et j'ai sous-entendu qu'il excluait les nombres inférieurs au "chiffre de départ"

Yddet

 

0 Compliments
Message 5 sur 7
4 103 Visites

En fait, ma solution est très proche de la tienne (dernier code),

mais tu as oublié que beaucoup de fonctions LV sont polymorphiques.

0 Compliments
Message 6 sur 7
4 096 Visites

Bonjour, Oui j'avais oublié ce détail ... Du coup j'ai réussi à pas mal simplifier cette partie du code, Merci à vous !!

0 Compliments
Message 7 sur 7
4 070 Visites