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

MATLAB Discussion :

Analyser un fichier excel pour detecter des erreurs.


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Septembre 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2020
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Analyser un fichier excel pour detecter des erreurs.
    Bonjour,

    Matlab R2019B
    tous les workpackages (si besoin)

    voici le contexte :
    Nous faisons de l'analyse de scans dans un labo de métrologie. On compare des capteurs entre eux. Pour cela nous devons manipuler des milliers de données et nous avons des scripts complexes qui se chargent d'analyser et de tracer les courbes.
    Pour répondre à une problématique de traçabilité interne et de gestion aisées des variables (qui changent à chaque scan) nous avons un fichiers excel qui reprends ces variables et nos commentaires. (fichier en pièce jointe)

    voici la problématique:
    il se glisse parfois des erreurs dans ce fichier excel, une lettre à la place d'un chiffre, une mauvaise syntaxe etc.
    Nous souhaitons donc analyser en amont du script ce fichier.
    Problème: lors de l'import du fichier excel toutes les cellules sont sous forme de texte. Si je veux vérifier qu'une ligne comprend des chiffres, je dois les transformer en préalable (avec string2num par exemple) Or si j'utilise ce type de fonction et qu'il y a une erreur, le script s’arrête ( logique) en signalant une erreur. Retrouver exactement d'où provient l'erreur peut être très long. nous souhaiterions avoir un système qui nous indique exactement où est l'erreur.

    exemple colonne A, ligne 3
    "ns 51:53"

    "ns" est le numéro du scan
    "51:53" indique que le fichier compile les scan 51 52 et 53.

    une erreur typique pourrait être
    "ns 5i:53" une lettre a été tapée par erreur par l'opérateur.

    On utilise les fonctions strtok et strtrim pour séparer les éléments et ensuite analyser les éléments séparément. Lorsque Matlab convertit le fichier excel, on se retrouve avec des cellules contenant uniquement des string. si je veux pouvoir vérifier que j'ai bien deux chiffres (51 et 53) je dois... convertir la cellule (string2num) et donc ça arrête le script.


    Piste suivie:
    utiliser les caractère Ascii.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    mystring='51:53'
    L=length(mystring)
    parity = mod(L,2)
    separ = (L+parity)/2
    Ascii = double(mystring)
    Ascii(separ)=48             % the ':' is converted into any numerical ascii character
    ifand(Ascii<58,Ascii>47)   % test all ascii values. If it’s numerical , it’s comprised between 48 and.
        "Ok!"
    else
        "Erreur!"
    je pense qu'il y a une meilleure façon de procéder mais je ne vois pas laquelle pour le moment.

    les fonction assert et isa sont intréssante, boite de dialogue etc.. mais encore une fois on doit d'abord convertir la cellule et ça coupe le script en cas d'erreur :/

    Merci à vous.
    Cordialement,
    Cédric

  2. #2
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 882
    Points : 3 432
    Points
    3 432
    Par défaut
    salut

    Citation Envoyé par CBourgoin Voir le message
    Bonjour,
    Problème: lors de l'import du fichier excel toutes les cellules sont sous forme de texte.
    et pourquoi ?
    comment importe tu les données ? xlsread ? readtable ?
    dans les deux cas tu dois récupérer les nombres sous forme de nombre
    dans excel les nombres sont bien des nombres ? (utilisation de la virgule ou du point comme séparateur)
    est ce que tu as Excel sur le poste ou tourne Matlab ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Septembre 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2020
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Bonjour,
    merci pour ton intervention rapide.
    Si tu regardes le fichiers excel, la cellule A3 contient deux données :"ns 51:53"
    ns est la variable "numero de scan" utilisée dans notre script et 51:53 indique qu'il y a 3 scan à traiter (51, 52 et 53).
    L'import sous excel donne donc forcément du texte.

    on sépare tout ce petit monde ensuite à coup de Strtrim et strtrok par exemple.

    un fichier excel contient une manip par colonne (le fichier exemple ne contient qu'une seule manip), on ne peux donc pas avoir deux colonnes (une pour le texte, une pour les chiffres) d'autant que certaine lignes comprenne des format de chiffre qui se suivent ( exemple cellule A13 : "originepasaxe 0.009 0.000050 -0.011 0.000050")

    On utilise la fonction xlsread.

    excel est bien installé sur le poste ou tourne matlab.

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 882
    Points
    52 882
    Par défaut
    Comme ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >> s = 'ns 5i:53';
    >> s = strrep(s(4:end), ':', '');
    >> all(isstrprop(s,'digit'))
     
    ans =
     
         0
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  5. #5
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Septembre 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2020
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Haaaa en voila une fonction intéessante

    isstrprop permet de déterminer de quelle type sont les données dans un ensemble de string. Ça c'est bien

    Merci pour le coup de main je vais de ce pas tester cette fonction toute neuve (pour moi )

Discussions similaires

  1. utilisation de fichiers excel pour générer des rapports
    Par infoest dans le forum kettle/PDI
    Réponses: 1
    Dernier message: 01/07/2013, 13h52
  2. Réponses: 1
    Dernier message: 16/02/2010, 17h13
  3. Réponses: 5
    Dernier message: 05/12/2008, 15h23
  4. Réponses: 0
    Dernier message: 26/11/2008, 12h20
  5. Lire un fichier Excel pour modifier les valeurs des cellules
    Par Paloma dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 31/10/2006, 15h13

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