04-03-2018 05:42 AM - modifié 04-03-2018 05:43 AM
Me suis amusé hier soir ...
Le code est polymorphique en lui-même, associé à un type vim, cela donne (à mon sens) un petit vi plutôt sympa. En paramètres d'entrée : 1) un Tableau de dimension quelconque (de 1 à x dimensions) ... 2) un "élément", bien entendu du même type que ceux contenus dans le Tableau d'entrée à x Dimensions .... 3) un flag pour trouver soit "le premier", soit "tous". En sortie un tableau qui vous donne les positions recherchées. Pouvoir rechercher n'importe quoi dans un Tableau de dimension quelconque ... je trouve ça sympa .
(si vous remarquez un bug ... vite me le dire ... mais en principe, c'est top)
( LV2017 éval )
Résolu ! Accéder à la solution.
le 04-03-2018 07:15 AM
RAS niveau fonctionnalité 😉
Merci du partage (tu as pensé à le publier dans les exemples de code ?), en plus sous forme de *.vim c'est nice.
--Eric
Eric M. - Senior Software Engineer
Certified LabVIEW Architect - Certified LabVIEW Embedded Systems Developer - Certified LabWindows™/CVI Developer
Neosoft Technologies inc.
le 04-03-2018 10:21 AM
Merci Eric, ... "c'est nice", ça fait plaisir, et venant de toi, doublement.
"tu as pensé à le publier dans les exemples de code ?" ... non ... je ne suis pas un habitué de cet aspect de la Communauté (à tord). Je suppose que je devrais poster ici ... l'éternel soucis me concernant c'est de pouvoir traduire ma présentation dans un anglais "digne de ce nom", et là ça pose soucis. C'est vrai que ce vi(m) est sympa et pourrait intéresser bien d'autres. Deux solutions ... ou tu le postes toi-même (tu me cites, tout simplement), ou ... oserais-je ? un petit coup de main pour avoir quelques lignes de présentation qui tiennent la route.
le 04-03-2018 12:47 PM
le 04-03-2018 01:15 PM
Merci Ouadji !
04-03-2018 01:59 PM - modifié 04-03-2018 02:02 PM
Nevermind j'allais te dire que je pouvais jouer le rôle du nègre.
Tu vois ton anglais n'est pas si mauvais 😉
Eric M. - Senior Software Engineer
Certified LabVIEW Architect - Certified LabVIEW Embedded Systems Developer - Certified LabWindows™/CVI Developer
Neosoft Technologies inc.
le 04-03-2018 03:25 PM
"j'allais te dire que je pouvais jouer le rôle du nègre"
Mais oui, Je me doute bien Eric ... mais je me suis dit qu'il n'y avait pas "énormément" à expliquer.
"Pas si mauvais" ... ... des phrases courtes, des "choses" simples ... sur une jambe
le 04-03-2018 03:40 PM
@ML927: Merci ? Si je trouve un truc intéressant qui peut servir aux autres, pourquoi ne pas le "donner". J'ai passé une bonne soirée hier à implémenter ce vi ... l'astuce a été de trouver comment rendre le code valide également pour un Tableau 1D. Car au départ mon code ne fonctionnait que et uniquement de 2D à xD. Mais le challenge était trop beau pour ne pas rendre ce code "universel". Et puis ... une idée que je "sens" et qui résiste ... quel bonheur. L'astuce c'est le "build array" juste après l'entrée "Array Elements in". Monter d'une dimension, qui restera virtuelle, me permet d'accepter le 1D aussi. voilou.
04-03-2018 03:46 PM - modifié 04-03-2018 03:47 PM
Ce n'est pas parce que tu le donnes "tout naturellement" que cela ne mérite pas un "Merci" 😉
Ceci dit ton message m'aura permis de lever le mystère du fameux "Build Array" du début dont je n'avais pas saisi l'utilité. Je sais, j'aurais dû poser la question... C'est un chouette VI en tout cas qui nous seras utile à coup sûr. Juste en passant, comme tu aimes bien l'optimisation, as-tu benchmarké le temps d'exécution du VI ? Histoire de comparer avec des méthodes plus "classiques" ?
04-03-2018 04:09 PM - modifié 04-03-2018 04:17 PM
"as-tu benchmarké le temps d'exécution du VI ?"
non.
oui, j'ai optimisé. Entre autres, j'avais un "build array" dans la While extérieure (pas bon ça) ... que j'ai réussi à faire sauter. Ceci dit ... si tu choisis l'option "trouver le premier" le temps de recherche devrait être très proche de la fonction native "search 1D array" ... ce, pour un array 1D ayant le même nombre d'éléments que la somme des éléments dans toutes les dimensions du Tableau d'entrée. Tout simplement parce que le code se base sur cette fonction native et que la conversion xD>1D (le reshape en initialisation) est très rapide. En ce qui concerne la While au centre, elle n'a pour fonction que de redécomposer l'indice "plat" du 1D donné par le reshape en indices multiples correspondant au Tableau xD d'entrée ... à moins que d'avoir un Tableau d'entrée à 1E+6 dimensions .... le code de cette While est très rapide également. Et si tu paramètres "trouver tous les indices", je suis persuadé que le temps d'exécution sera du même ordre que n'importe quel code qui boucle avec un shift-registre pour réinjecter l'indice=indice+1 à l'entrée du search 1D array. De plus, ce vi est un vim ... donc il est "inline into calling vi" ... pas d'appel de code. Je suis prêt à parier que mon code à un durée d'exécution qui est du même ordre que n'importe quels autres codes. A la différence que le mien, il est full polymorphe sur le nombre de dimensions et sur l'élément à rechercher. Mais si tu a envie de tester, vas-y ... et surtout donne nous tes résultats.