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 :

Suite -> Problemes A et B et C ect. [Débutant]


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 26
    Par défaut Suite -> Problemes A et B et C ect.
    Bonjour,

    Je me suis déjà tourné vers vous pour m'aider pour un problème (http://www.developpez.net/forums/d15...t-meme-moment/) et je vous en remercie encore.

    Mais la tâche se complique. Je devais trouver les véhicules pour lesquels les problèmes A et B surviennent au même kilométrage. Je viens d'apprendre que ce n'est que la partie immergé de l'iceberg car je dois répéter le même principe pour les 1500+ problèmes différents. (Nombres de véhicules pour lequel A et C surviennent au même kilométrage, puis A et D, puis A et E ect ... Toujours en fonction de A)

    Voici donc l’Excel Model avec lequel je teste le script: http://www.cjoint.com/c/EIcirUhbHxE

    On peut voir que

    A et B au même kilométrage: V10, V30 Donc 2
    A et C au même kilométrage: V40 Donc 1
    A et D au même kilométrage: V30 Donc 1
    A et E au même kilométrage: / Donc 0
    A et F au même kilométrage: V20, V40 Donc 2
    A et G au même kilométrage: V20 Donc 1

    Je veux donc automatiser cette recherche (que j’ai fait ici à la main) et j'ai commencé avec le script suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    path = 'C:\Users\Test3.xlsx'; %Path to the Excel
    [~,~,data] = xlsread(path); %Open and read the Excel with Matlab
     
    error=unique(data(1:end,2));
    vehicle=unique(data(1:end,1));
     
    for k=1:length(vehicle)
        for i=1:length(data)
            if data(i,1)==vehicle(k)&&data(i,2)=='A'
                c=c+1;
                vehicle(k,2)=data(i,3);
                continue ;
            else
            end
        end
    end
     
    for k=1:lenth(vehicle)
        for i=1:length(data)
            if data (i,1)==vehicle(k)&&data(i,3)==vehicle(k,2)
                for j=1 length(error)
                    if data (i,2)==error(j)
                        result(j,2)=result(j,2)+1;
                    else
                    end
                end
            end
        end
    end
    Ce code devrait avoir pour but uniquement de compter mais j'ai pas mal de messages d'erreur qui popent comme par exemple:

     Undefined function 'eq' for input arguments of type 'cell'.
    Error in CountAB (line 9)
            if data(i,1)==vehicle(k)&&data(i,2)=='A'
    Je sais que c'est plutôt une logique de type C mais c'est un des seul langage de prog ou je me débrouille un peu.
    Si vous avez des idées j'en serai ravi!

    Merci d'avance.
    Cordialement

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Par défaut
    Bonjour,

    D'après le message d'erreur data et/ou vehicle sont/est cellule(s). Pour accéder au contenu de la cellule il faudra penser à utiliser les accolades {}

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if data(i,1)==vehicle(k)&&data(i,2)=='A'
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if data{i,1}==vehicle{k} && data{i,2}=='A'
    Petite question préliminaire qui va nous aider à cerner le problème, sais tu combien de problèmes il existe? ( i.e. à quelle lettre s'arrête la comparaison?)

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 26
    Par défaut
    Il y a précisement 1249 messages d'erreur. Je les ai appelé A, B ect dans le model mais dans l'excel original c'est plus un texte du type "'Ext-Low: CAN-Signal Error (0x89) read'"
    j'ai donc remplacé mes parentheses par des acolades :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    path = 'C:\Users\q377420\Desktop\BMW Praktikum\Aufgaben\Stefan Sollinger\1-\Matlab\Test3.xlsx'; %Path to the Excel
    [~,~,data] = xlsread(path); %Open and read the Excel with Matlab
     
    error=unique(data(1:end,2));
    vehicle=unique(data(1:end,1));
    c=0;   %initialisation de la variable c
    for k=1:length(vehicle)
        for i=1:length(data)
            if data{i,1}==vehicle{k}& data{i,2}=='A'
                c=c+1
                vehicle{k,2}=data{i,3};
                continue 
            else
            end
        end
    end
     
    for k=1:length(vehicle)
        for i=1:length(data)
            if data {i,1}==vehicle{k} & data{i,3}==vehicle{k,2}
                for j=1:length(error)
                    if data {i,2}==error{j}
                        result{j,2}=result{j,2}+1;
                    else
                    end
                end
            end
        end
    end
    j'ai supprimé un & pour le ET car selon matlab il faut convertir en scalair pour le &&
    De plus j'ai initialisé la variable c=0 au debut.
    apres avoir fait tourné le script, il compte jusque c=25

    par contre j'obtiens un autre message d'erreur:

    Undefined variable "result" or class "result".
    
    Error in CountAB (line 23)
                        result{j,2}=result{j,2}+1;

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Par défaut
    Quand tu arrives à cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    result{j,2}=result{j,2}+1;
    Tu essaies d'incrémenter ta variable result, qui n'a jusqu'à présent jamais été défini. Il faut que tu initialises ton tableau de cellules result.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 26
    Par défaut
    faut l'initialiser oui mais je sais pas comment je peux faire pour initialiser une matrice de type result=[toutes les erreurs sans A , replir avec des zeros la deuxieme colonne]

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Par défaut
    Un truc de ce genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    error=unique(data(1:end,2));
    result = error(2:end);
    X = {0};
    X = repmat(X,length(result),1);
    result(:,2) = X;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 30/05/2008, 11h15
  2. [Conception] un peu d aide suite un probleme sur un formulaire
    Par jojojojo57 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 29/05/2007, 18h48
  3. Réponses: 2
    Dernier message: 06/03/2007, 07h02
  4. Réponses: 3
    Dernier message: 26/10/2006, 18h21

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