2016-08-01 1 views
1

Je sais que la question est confuse donc j'essaierai d'expliquer mon problème. Je travaille dans un projet labview et l'une des choses que je dois faire est, après avoir demandé à l'utilisateur le nombre de variables et le nombre de valeurs différentes pour chacun d'entre eux, créer un tableau avec toutes les combinaisons.Comment peupler et tableau dont les lignes étaient des combinaisons et des colonnes les différents groupes? (Labview)

Permet supose que nous avons 3 variables différentes, par exemple: var1, var2, Var3

et le nombre de valeurs diffent pour chacun d'eux est:

var1 -> 0, 1, 2 
var2 -> 11, 22 
var3 -> 55, 66, 77, 88 

Ainsi, le tableau résultant devrait comme ceci:

0 11 55 
0 11 66 
0 11 77 
0 22 55 
0 22 66 
... 

cette façon jusqu'à 3 x 2 x 4 = 24 lignes

En tenant compte du fait que le nombre de variables et de valeurs de chacun sera habituellement différent, comment puis-je remplir ce tableau?

J'ai besoin de savoir comment le faire avec labview. Merci beaucoup d'avance.

Répondre

1

Le mot que vous cherchez est « produit cartésien ».

Vous pouvez utiliser gmath/Discrète Math.llb/produit cartésien de Lists.vi pour y parvenir:

labview code

Cela donne le résultat escompté:

result

La manière cela fonctionne est que vous alimentez le produit cartésien VI un tableau 1D détaillant la taille de plusieurs tableaux que vous voulez obtenir le produit cartésien, et il génère les indices correspondants dont vous avez besoin pour indexer le Des tableaux pour créer le produit cartésien. Tout ce que vous devez faire est de construire un tableau 2D de (tableau 1D de vecteurs lignes) qui contient toutes les informations que vous voulez calculer le produit cartésien de, et un tableau 1D qui montre la taille de chaque vecteur ligne individuelle. Dans LabVIEW, lorsque vous construisez un tableau de tableaux 1D, le nombre de colonnes devient max (len (row_vector_i)), donc pour conserver cette information de longueur pour un produit croisé automatique, la meilleure méthode consiste simplement à construire un tableau 1D de chaque cluster a un tableau 1D individuel ou un vecteur ligne. Cela préserve les informations de taille.

Voici ce qui ressemble à:

cluster auto

J'ai sauvé tout cela dans un projet qui devrait être tout à fait compatible avec LV8.6, found here

+0

Cela semble être une bonne solution, je Je vais essayer. Le seul problème est que le nombre de variables n'est pas toujours 3 mais peut aussi être 1,2,4,5 .... La seule solution que je trouve est de créer une structure condictionnelle avec 5 ou 6 "si", de 2 à 6 ou 7 vars, et dans chaque condition «si», placez la solution que vous avez suggérée pour 3 variables. Merci beaucoup. –

+0

J'ai eu un gros problème, ma version LV est 8.6 et n'a pas de produit cartésien. –

+0

J'ai créé l'exemple et l'ai ajouté à la publication principale. Le VI produit cartésien prend en compte les listes de longueur variable, en utilisant son entrée "nombre d'éléments dans chaque liste". – ijustlovemath

1

Le moyen le plus simple et le plus simple est d'utiliser 3 pour les boucles les unes dans les autres.

donc la plus petite boucle itérera var3,

moyenne boucle itérera var2 et

grande boucle itérera var1.

0

Partager une implémentation de Python, aiderions si vous pouvez spécifier la langue que vous implémentez dans.

def array_3d(var1,var2,var3): 
    a = [] 
    for i in range(len(var1)): 
    for j in range(len(var2)): 
     for k in range(len(var3)): 
     a.append([var1[i],var2[j],var3[k]]) 
    print a 


array_3d([1,2,3],[10,20,30],[300,400,500,600])