IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Evaluation d'expressions maths


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Août 2013
    Messages : 6
    Par défaut Evaluation d'expressions maths
    Salut à tous,

    Je bosse actuellement sur un projet qui consiste à convertir des données issues d'un logiciel de télémétrie vers Excel, donc en CSV, et à appliquer des fonctions mathématiques internes au logiciel, à ces données. Concrètement, je possède un fichier au format du logiciel avec toutes les données (par exemple, régime moteur, vitesse etc.), à ce niveau là, pas de souci, j'arrive à les lire et à exporter les données brutes en CSV. Ce logiciel nous permet d'appliquer à ces différents canaux des fonctions mathématiques internes au logiciel (ça va des simples fonctions trigo à des filtres style Butterworth, la possibilité de dériver les canaux etc.), et ces expressions mathématiques, définies par l'utilisateur, sont consignées dans un fichier XML (on appelle ça des canaux math, tout simplement). Voici des exemples de canaux math (je précise que c'est du n'importe quoi, c'est juste un exemple pour que vous voyez à quoi ça ressemble ):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pow('Vitesse', 2) / 'Rayon'
    abs('Rpm')/((sin('Rayon')+smooth('Rpm', 5))*cos('Brake'))
    Maintenant, ce que je souhaiterais faire, c'est, après avoir récupéré toutes ces fonctions du fichier XML (en désérialisant, pas de problème à ce niveau), évaluer toutes ces expressions pour avoir les valeurs finales et les écrire dans un fichier CSV (pour ce qui est des fonctions en elles-mêmes, pour certaines pas de souci puisqu'elles sont déjà présentes dans la bibliothèque Math, pour les autres j'ai réussi à trouver comment faire donc pour ça, ça devrait aller). Pour les canaux, comme je l'ai déjà dit, pas de souci, j'arrive à lire les données et les consigner dans des tableaux. Il me reste plus qu'à appliquer ces expressions à ces données... Et c'est évidemment là que je bloque. J'ai déjà quelques pistes, j'ai fait quelques recherches, je suis tombé notamment sur les arbres binaires, les parsers, etc. Mais j'ai quand même un peu de mal à mettre tout ça bien en place, notamment pour gérer les priorités, les parenthèses, les fonctions qui prennent des paramètres... Bref, je viens donc ici pour prendre conseil, si vous avez des idées à me suggérer pour partir sur de bonnes bases, pourquoi pas d'autres projets se rapprochant de celui-là... Je prends tout !

    Merci d'avance !

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    une solution simple c'est de transformer tes chaines de caractères pour avoir des variables sql
    et de rajouter select devant

    après tu interroges une base, ou à défaut un datatable
    je n'ai pas la syntaxe exacte mais à priori il y a une classe qui normalement sert pour les bases de données tu peux lui demander des choses genre select 5 + @var et tu lui donnes un parameter @var avec un valeur et il te sort les résultats
    toutes les fonctions seront alors à convertir vers le langage sql

    sinon il y a aussi la compilation à la volée, ici c'est du code vb à mettre dans un string au sein d'une fonction par exemple, tu récupères le pointeur vers la fonction et donc tu peux obtenir le résultat, c'est moins performant

    et entre les 2 il y a les expressions lambdas qui fonctionnent bien à partir du framework 4
    ca revient au même que de compiler du code, c'est plus compliqué à écrire mais plus performant
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Par défaut
    Hello j'avais vu un truc sur Codeplex pour faire ce genre de truc. Jamais testé donc je me réserve mon avis mais si ça peut t'aider.

    https://ncalc.codeplex.com/

Discussions similaires

  1. [VBA] Evaluation d'expression (PHP)
    Par Scritch852 dans le forum Général VBA
    Réponses: 13
    Dernier message: 22/03/2007, 17h35
  2. [XPATH] Evaluer une expression xpath dans un xml
    Par antigone dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 29/01/2007, 17h21
  3. Réponses: 3
    Dernier message: 30/08/2006, 21h30
  4. [Source] Evaluer une expression algébrique
    Par Delbeke dans le forum Vos contributions VB6
    Réponses: 6
    Dernier message: 22/08/2006, 11h52
  5. simplifier une expression math ?
    Par kanzarih dans le forum Delphi
    Réponses: 7
    Dernier message: 23/05/2006, 23h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo