Discussions au sujet de NI LabVIEW

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

Comparer deux tableaux

Résolu !
Accéder à la solution

Bonjour à tous,

 

Mon besoin ne semble pas très compliqué mais je ne sais pas comment m'y prendre...

 

A chaque tour de boucle, le programme reçoit un tableau de double dans lequel de nouvelles valeurs sont ajoutées au début (les dernières valeurs sont écrasées).

Le but est de savoir combien de nouvelles valeurs ont été ajoutées. Dans l'exemple ci-joint, le résultat serait "2" car le tableau s'est décalé de deux lignes.

 

Avez-vous une idée simple pour réaliser cette action ?

 

Merci d'avance,

 

Thibaud.

 

0 Compliments
Message 1 sur 14
6 754 Visites
Solution
Accepté par TMDN

Bonjour,

 

une implémentation possible est de comparer les deux tableaux via la fonction = en mode "aggregate" (clic droit sur le noeud =, Comparaison mode -> Aggregate). Si les deux tableaux ne sont pas égaux, supprimer le premier élément du tableau "après" et le dernier du tableau avant et recommencer.

 

Lorsque els deux tableaux sont égaux, le nombre d'execution de l'algorythme peut renseigner l'offset.

 

Le diagramme ressemblerait à cela:

compare.png 

 

Il y a peut être d'autres implémentations plus efficace (celle la demande quand même pas mal de ressource processeur, mais elle fonctionne)

 

Cordialement

______________
Florian Abry
Inside Sales Engineer, NI Germany
Message 2 sur 14
6 735 Visites

autre code ... mais algorithme identique à celui de Naity

 

Pour l'algo, je n'ai pas trouvé mieux.

Je ne "vois" pas de façon "super simple" de résoudre ce type de problème.

 

C'est un problème "intéressant".

 

si quelqu'un à un algo "plus simple" ... je serais intéressé.

 

SR1.png

 

 

 

Message 3 sur 14
6 720 Visites

Merci à tous les deux pour votre réponse, votre méthode est la bonne !

0 Compliments
Message 4 sur 14
6 714 Visites

La solution est la seule "propriété de Naity   Smiley clignant de l'œil

 

Pour ma part, j'ai uniquement changé la forme (et encore ... pas énormément)

 

en fait ... j'ai cherché 20'... et je n'ai pas trouvé mieux.

Message 5 sur 14
6 705 Visites


je n'ai pas trouvé mieux.


salut à tous, idem, pas mieux.

Mais une remarque, si le tableau a des nouveaux éléments, alors la fonction qui "ajoute" les nouveaux éléments dans le tableau doit connaître le nombre d'éléments ajouté. Non?

 

A+ à tous

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group

Message 6 sur 14
6 696 Visites

Oui mais la fonction qui "ajoute" les nouveaux éléments n'est pas forcement au même endroit (par exemple dans une DLL)

Message 7 sur 14
6 693 Visites

bein ...

 

faut prévoir dans la DLL de "sortir" en paramètre le nombre d'élément ajouté.

 

ceci dit ... si c'est un x.dll venu d'ailleurs  Smiley heureux  et sans la source .... c'est un cul de sac.

Message 8 sur 14
6 688 Visites

TMDN a écrit :

Oui mais la fonction qui "ajoute" les nouveaux éléments n'est pas forcement au même endroit (par exemple dans une DLL)


idem, faut prévoir dans la DLL de "sortir" en paramètre le nombre d'élément ajouté

 

Ma remarque se base sur :

Option1

> en entrée un tableau [1 ; 1 ; 1 ; 1 ; 1]

> la fonction "inconnue" ajoute 1, le tableau devient [1 ; 1 ; 1 ; 1 ; 1]

> Quid de la réponse? le tableau n'a pas changé?

 

Option2

> en entrée un tableau [1 ; 2 ; 1 ; 2 ; 1 ; 2]

> la fonction "inconnue" ajoute [1 ; 2], le tableau devient [1 ; 2 ; 1 ; 2 ; 1 ; 2]

> Quid de la réponse? le tableau n'a pas changé?

 

Option3

> en entrée un tableau [1 ; 2 ; 3 ; 4 ; 5 ; 6]

> la fonction "inconnue" ajoute [1 ; 2 ; 3 ; 4 ; 5 ; 6], le tableau devient [1 ; 2 ; 3 ; 4 ; 5 ; 6]

> Quid de la réponse? le tableau n'a pas changé?

 

si X = X alors pas de nouvelle valeur? le résultat n'est pas l'opération. Si la fonction doit savoir si nouvelle opération....

 

De plus le problème peut être très "consommateur" de ressource CPU. Par exemple si une carte d'acquisition retourne toutes les secondes, le tableau des mesures, avec un scan rate de 100 MHz. Il est plus simple de connaître le nombre de points mesurés, que de tenter de le deduire.

 

Non?

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group

Message 9 sur 14
6 679 Visites

Non? ... y'a pas photo.

 

Option 1, Option 2, Option 3, Option n ....

 

pour trouver des "options" qui foute la m**** .... t'es un champion Luc (je taquine bien entendu  Smiley clignant de l'œil  )

 

Dans un programme, les bugs sont à 99% provoqués par les "limites" (les bords, les valeurs "extrèmes")

 

 

(Bonjour Lu c ... il n'arrête pas de pleuvoir aussi chez toi ?)

 

 

 

 

Message 10 sur 14
6 673 Visites