From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Discussions au sujet de NI LabVIEW

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

Search xD Array (recherche dans un Tableau de dimension quelconque)

Résolu !
Accéder à la solution

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 . Smiley heureux

(si vous remarquez un bug ... vite me le dire ... mais en principe, c'est top)

 

panel.jpg

( LV2017 éval )

Message 1 sur 13
3 529 Visites

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.

0 Compliments
Message 2 sur 13
3 504 Visites

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.

0 Compliments
Message 3 sur 13
3 487 Visites

I have done my  best  Smiley tirant la langue

 

0 Compliments
Message 4 sur 13
3 472 Visites

Smiley heureux

 

Merci Ouadji !

CLAMaxime -- Kudos are a great way to say thank you
0 Compliments
Message 5 sur 13
3 462 Visites

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.

0 Compliments
Message 6 sur 13
3 459 Visites

"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" ... Smiley indifférent ... des phrases courtes, des "choses" simples ... sur une jambe  Smiley heureux

0 Compliments
Message 7 sur 13
3 451 Visites

@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.

0 Compliments
Message 8 sur 13
3 442 Visites

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" ?

CLAMaxime -- Kudos are a great way to say thank you
0 Compliments
Message 9 sur 13
3 439 Visites

"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.

0 Compliments
Message 10 sur 13
3 430 Visites