Discussions au sujet de NI LabVIEW

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

faire une recherche dans tableau n dimension

Bonjour,

 

Comment peut on rechercher des éléments dans un tableau à n dimension, en d'autre terme effectuer une recherche comme dans excel: rechercheV?

 

merci pour vosponse

0 Compliments
Message 1 sur 15
4 458 Visites

Avec des boucles "For" imbriqués, tu peux parcourrir tes éléments.

Par contre, pour répondre correctement à ta question, il faudrait plus de détails, et si possible le code de ta première tentative.


Les informations manquantes sont :

- Taille de l'élement recherche : 1 portion de tableau , 1 seul élément.

- Nombre de fois que l'élement se trouve dans le tableau : 1 fois, N fois....

- Type de tableau : Chaine / Numérique

 

 

Cdt,


Michael

“En science, la phrase la plus excitante que l'on peut entendre, celle qui annonce des nouvelles découvertes, ce n'est pas "Eureka" mais c'est "drôle"
Isaac ASIMOV
0 Compliments
Message 2 sur 15
4 453 Visites

voici un code qui te mermet de faire une recherche sur un Tableau comportant un nombre quelconque de dimensions (ici 4)

 

Le Tableau de sortie te donne les "coordonnées" du 1er élément trouvé.

Si le 1er élément du tableau " result " = -1 ... alors l'élément recherché n'existe pas.

 

ci-joint code LV2014

 

toto.png

 

 

Message 3 sur 15
4 446 Visites

Sympatique ce code.


Pour l'améliorer, je mettrais ta boucle "FOR" dans un case, qui permettrait de sauter cette partie de code en cas de "-1" en sortie de recherche, évitant de perdre du temps pour rien, en cas d'appel récursif :).

 

Et pour faire une recherche multi-élément, il suffit de mettre ta fonction rechercher dans une boucle while avec l'offset de départ en registre à décalage.

 


Cf pièce jointe 😉 histoire de complexifier le code de Ouadji XD

“En science, la phrase la plus excitante que l'on peut entendre, celle qui annonce des nouvelles découvertes, ce n'est pas "Eureka" mais c'est "drôle"
Isaac ASIMOV
Message 4 sur 15
4 438 Visites

Sympatique ce code.   merci    Smiley heureux

 

je profite du polymorphisme des fonctions "Reshape Array" et "Array Size"

 

oui ... la strucure Case pour bypasser directement en cas de "-1" ...

J'y avais pensé   ... j'ai conservé le code "sans" pour "faire au plus simple"

Mais je suis d'accord ... une structure Case "en plus", c'est mieux.

 

0 Compliments
Message 5 sur 15
4 432 Visites

Merci pour votre réponse,

 

je précise mon souhait: 

-Je voudrait à partir d'une liste de paramètres d'entrée:par  exemple je rentre ces paramètres: type d'outil (texte), type de matériaux(texte),module de la dent (numérique)etc... et ainsi recherché l'élément numérique( vitesse de rotation)qui correspond  à la combinaison de ces paramètres, sachant que je récupére ce tableau de donnée à partir d'excel, j'ai ajouter la partie pour récupérer le fichier excel mais  après je sais pas comment chercher mes éléments sur ce fichier, sachant que il faudrait concaténer ces 3 chaines et recherché dans le tableau

 

En entrée j'ai: 3 chaines et une constante et en sorti je voudrait un élément numérique (qui correspond à la vitesse de rotation)

 

ci joint j'ai mis le fichier excel et mon début de code (j'ai juste récupérer le code exemple de NI)

 

 

Tout télécharger
0 Compliments
Message 6 sur 15
4 428 Visites

Attention ... je viens de m'en apercevoir ...

 

mon code ne fonctionne que si la dimension du Tableau est > 1 !   (pas de limites supérieures, mais n > 1)

 

Pour pouvoir accepter n=1, il faut prévoir du code de "test" (test et structure Case) .. et si n=1, passer sur la fonction "Search D Array" seule.

0 Compliments
Message 7 sur 15
4 424 Visites

Je ne peux pas ouvrir ton exemple en lv2015.

 

Voilà comment je m'y prendrais.

 

1-Je récupère les données de mon fichier excel

2- Je stocke mes données d'entrée dans un tableau de cluster (3élements : outil/Matériaux/Dents), et ma données de sortie dans un tableau de numérique (vitesse de rotation)

3- Je récupère le cluster de recherche de mon utilisateur, et avec la fonction "search in 1D Array" je trouve la position dans mon tabealu de cluster

4- Avec la fonction "indexer un tableau 1D" je récupère la vitesse de rotation à partir de l'indice obtenu dans la recherchde mon tableau de cluster.

CQFD.

Fourni ton vi en version LV2011 ou 2014, et je te le met en place 😉

 

 

EDIT : Avec cluster en définition de type 😉 Comme cela si un jour tu ajoutes des paramètres d'entrées, ca s'adapte 😉

“En science, la phrase la plus excitante que l'on peut entendre, celle qui annonce des nouvelles découvertes, ce n'est pas "Eureka" mais c'est "drôle"
Isaac ASIMOV
Message 8 sur 15
4 418 Visites

négatif ...

 

impossible de résoudre le cas de " n = 1 " avec une Structure Case.

 

On tombe sur un soucis de polymorphisme !!!  Donc mon code n'est valable que si n > 1

 

Ceci dit, je ne vois pas bien comment on pourrait (avec LV) injecter des Tableaux de tailles différentes à l'entrée d'un code.

 

Donc si on a un Tableau à une seule dimension ... on le sait à l'avance ... et on utilise la fonction Search 1D seule.

0 Compliments
Message 9 sur 15
4 413 Visites

En passant par un variant, et une variable de dimension, tu peux rendre ton VI "polymorphe" ^^, mais bon après suffit d'ajouter un cas de détection de la dimension pour éviter ton bout de code Smiley MDR

 

Et pour connaitre la dimension de ton tableau, tu te bases sur la taille de ton tableau de dimension XD.... C'est clair dans ma tête à vous de décrypter après

“En science, la phrase la plus excitante que l'on peut entendre, celle qui annonce des nouvelles découvertes, ce n'est pas "Eureka" mais c'est "drôle"
Isaac ASIMOV
0 Compliments
Message 10 sur 15
4 410 Visites