06-08-2017 03:30 AM - modifié 06-08-2017 03:43 AM
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.
Résolu ! Accéder à la solution.
le 06-08-2017 05:11 AM
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)
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
le 06-08-2017 06:52 AM
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.
le 06-08-2017 12:40 PM
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)
le 06-09-2017 01:50 AM
le 06-09-2017 02:59 AM
En fait, ma solution est très proche de la tienne (dernier code),
mais tu as oublié que beaucoup de fonctions LV sont polymorphiques.
le 06-12-2017 02:18 AM
Bonjour, Oui j'avais oublié ce détail ... Du coup j'ai réussi à pas mal simplifier cette partie du code, Merci à vous !!