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

Scilab Discussion :

projet de stage


Sujet :

Scilab

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Points : 23
    Points
    23
    Par défaut projet de stage
    Bonjour

    Je suis actuellement en stage en deuxième année de master d'électronique.
    Je dois réaliser le programme suivant sous scilab.
    Je dispose de plusieurs fichiers textes qui contiennent différentes mesures(mesure sur le carbone) ces fichiers textes sont composés de deux colonnes l'une représente le temps et l'autre les différents pics de carbone. Chaque fichier est disposé ainsi.
    Dans un premier temp j'ai du faire un programme scilab qui consiste à ouvrir un des fichiers puis à tracer la courbe qui représente le pic de mercure.

    Dans un second temp je dois étudier une zone qui se trouve juste apres le pic et calculer sa valeur moyenne. et regarder si celà correspond aux valeurs trouvées dans le fichier texte et que ca coincide bien avec la courbe.
    Celà fonctionne. Seulement je dois à chaque que j'ouvre un fichier réajuster le ind(qui est un nombre correspondant au début de la zoneà étudier),car bien sur dans chaque fichier texte les mesures sont différentes.

    Je dois donc réaliser un bout de programme sous scilab qui permet de faire automatiquement ce réajustement. Je pensais utiliser select case(équi à switch case en C) ou alors faire celà avec while.
    Quelqu'un peut il m'aider?

    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    Tu veux pouvoir déterminer automatiquement une zone qui se trouve juste apres un pic, c'est bien cela?

    De quel façon pensais-tu utiliser select case? As-tu essayé de coder quelque chose?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Points : 23
    Points
    23
    Par défaut
    Bonjour

    excuse moi cette partie là je l'ai déjà faite. J'ai eu apparement un souci pour envoyer mon message. Pour ce résoudre ce problème j'ai utlisé la fonction max.
    Mon problème est le suivant:
    Jusqu'à présent j'ouvrais chaque fichier à la main. les fichiers se trouve dans un dossier
    Je dois donc réaliser une procédure d'automatisation qui permettent:
    -D'ouvrir les fichiers les uns apres les autres.
    -Lire leur contenu.
    -Appliquer le traitement que j'ai réalisé précédemment.

    Pour celà je dois utiliser la commande dir. Le problème je ne sais pas comment démarrer?

    Jusqu'à présent j'avais le programme suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //Lecture du fichier au format texte
    [fichier,chemin] =uigetfile('*.txt');
    nomfichier = chemin + '\' + fichier;
     
    //nomfichier = 'data.txt';
    A = read(nomfichier,-1,2);
     
    // Vecteurs "temps" (s) et "pic"
    temps =(A(:,1))/1000;
    pic = A(:,2);
    J'ouvrais donc mes fichiers à la main.

    Es ce que tu saurais comment faire? J'ai regardé dans l'aide de scilab et je comprend pas bien comment fonctionne cette fonction dir.

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Par exemple en se basant sur l'exemple de notre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    rep = '/monRep';
    ext = '*.txt';
    chemin=fullfile(rep,ext)
     
    liste = dir(chemin);
     
    A = read(liste.name(1),-1,2);
    Par exemple. Ensuite pour lire tous les fichiers et les conserver dans une matrice, il faut faire une boucle en fonciton du nombre de fichier dans liste...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Points : 23
    Points
    23
    Par défaut
    voilà ce que ca donne dans mon cas fichiers est le nom de mon répertoire qui contient tout les fichiers textes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    rep='/fichiers';
    ext='*.txt';
    chemin=fullfile(rep,ext)
    liste=dir(chemin);
     
    //nomfichier='data.txt'
    A=read(liste.name(1),-1,2);
    lorque je compile il me signale l'erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    A=read(liste.name(1),-1,2);
                       !--error 36 
    Mauvais premier argument.
    Je voudrais savoir a quoi correspond "name" dans liste.name(1). Est ce que c'est le nom de mon répertoire?

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Dans rep, il faut mettre le chemin complet de ton répertoire...

    Si liste n'est pas vide, liste.name(1) correspondra au chemin complet du premier fichier de la variable liste.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Points : 23
    Points
    23
    Par défaut
    Est ce que comme ça je l'ai bien défini le chemin de mon répertoire? Ou est ce qu'il manque des parenthèses sje suis en train de me prendre la tête avec celà.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    rep='/C:\Users\ZoDa\Documents\programmescilab';
    ext='*.txt';
    chemin=fullfile(rep,ext)
    liste=dir(chemin);
     
    //nomfichier='data.txt'
    A=read(liste.name(1),-1,2);
    Il me met toujours la même erreur que j'ai énoncé ci dessus.

  8. #8
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    C'est quoi ce slash / au début du nom de répertoire ?

    Pour comprendre essaye de vérifier la valeur de liste(1).name avant l'appel à la fonction READ.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Points : 23
    Points
    23
    Par défaut
    Bonjour,

    Merci à tout les deux pour vôtre éclaircissement et vôtre aide ca marche. Lorsque je compile il m'ouvre automatiquement le premier fichier.
    Maintenant je voudrais chaque fichier les uns apres les autres. J'ai donc fait une boucle.(voir ci dessous)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    rep='C:\Users\ZoDa\Documents\programmescilab';
    ext='*.txt';
    chemin=fullfile(rep,ext)
    liste=dir(chemin);
     
    //nomfichier='data.txt'
    for i=1:1:5,
    A=read(liste.name(i),-1,2);
    end;
    Je l'ai compilé et il me dit l'erreur suivante :

    A=read(liste.name(i),-1,2);
    !--error 21
    Index invalide.
    Est ce que il faut mettre que cette partie ou tout dans ma boucle? celle ci est elle bien déclarée?

  10. #10
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Apparemment tu as moins de 5 fichiers texte dans le répertoire que tu as listé.

    Tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    rep='C:\Users\ZoDa\Documents\programmescilab';
    ext='*.txt';
    chemin=fullfile(rep,ext)
    liste=dir(chemin);
    
    //nomfichier='data.txt'
    for i=1:size(liste.name,1),
    A=read(liste.name(i),-1,2);
    end;

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Points : 23
    Points
    23
    Par défaut
    J'ai fait ce que tu m'as dit.

    /
    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
    /lecture du fichier au format texte
     
    rep='C:\Users\ZoDa\Documents\programmescilab\fichiers';
    ext='*.txt';
    chemin=fullfile(rep,ext)
    liste=dir(chemin);
     
    //nomfichier='data.txt'
    for i=1:size(liste.name,1),
    A=read(liste.name(i),-1,2);
    end;
     
    //Vecteurs temps et pics
    temps=(A(:,1)/1000);
    pic=A(:,2);

    Lorsque je compile il me signale qu'il n'y a pas d'erreur, seulement j'ai toujours qu'un seul fichier qui s'ouvre.

    lorque je met size(liste.name,1) c'est le premier fichier qui s'ouvre, et lorsque je met size(liste.name,2) c'est le deuxième.

    Je comprend pas bien ... aurais tu une idée??

  12. #12
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Tu écrases ta variable A à chaque itération de ta boucle.


    Une solution, si ça existe en Scilab, est d'utiliser un tableau de cellules.



    [HS]C'est bizarre comme choix de la part de Scilab que la sortie de DIR soit différente (et bien moins pratique je trouve)

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Points : 23
    Points
    23
    Par défaut
    ok juste une precision.
    Dans chaque cellule de mon tableau il y aurait ma matrice A ??

  14. #14
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Oui, dans la boucle, tu peux faire (attention la syntaxe n'est pas la même sous scilab et sous MATLAB) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i=1:size(liste.name,1),
        MaCellule(i).entries=read(liste.name(i),-1,2);
    end;
    Ensuite pour récupérer la première matrice par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PM = MaCellule(1).entries;

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Points : 23
    Points
    23
    Par défaut
    Bonjour;

    Je n'arrive pas à faire mon tableau à cellule plutôt je n'arrive à l'écrire.

    Sur scilab pour faire un tableau on le fait de la facon suivante:
    par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    ->B=[1,2,3;4,5,6;6,8,9]
     B  =
     
        1.    2.    3.  
        4.    5.    6.  
        6.    8.    9.
    Dans mon cas chaque nombre correspondrait à ma matrice A. Cette matrice A représenterait un des fichiers bien sur.

    Et c'est là que je bloque. Aurait tu une idée?

  16. #16
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Je t'ai donné le code dans mon précédent message...

    Quelle est la partie que tu n'as pas compris?

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Points : 23
    Points
    23
    Par défaut
    Voilà donc ce que j'ai fait:

    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
     
    //lecture du fichier au format texte
     
    rep='C:\Users\ZoDa\Documents\programmescilab\fichiers';
    ext='*.txt';
    chemin=fullfile(rep,ext)
    liste=dir(chemin);
     
    //nomfichier='data.txt'
    //A=read(liste.name(1),-1,2);
     
    for i=1:size(liste.name,1),
        Macellule(i).entries=read(liste.name(i),-1,2);
    end;
     
    A=Macellule(1).entries; 
     
    //Vecteurs temps et pics
    temps=(A(:,1)/1000);
    pic=A(:,2);
    Lorsque je compile il n'y a d'erreur, mais j'ai toujours qu'un fichier qui s'ouvre.
    Quel est le problème??

  18. #18
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut


    Et bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    A=Macellule(1).entries;
    correspond au 1er fichier.

    Puis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    A=Macellule(2).entries;
    correspond au 2ème fichier.

    Et ainsi de suite...

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Points : 23
    Points
    23
    Par défaut
    Ok ca marche merci beaucoup.
    Juste une dernière question je voulais ce que ca voulait dire ".name"dans "liste.name" et ".entries" dans "Macellule(1).entries"??

    Encore mer ci pour vôtre aide

  20. #20
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Citation Envoyé par jéjéleboss Voir le message
    Juste une dernière question je voulais ce que ca voulait dire ".name"dans "liste.name" et ".entries" dans "Macellule(1).entries"??
    le résultat de dir est une structure qui contient 3 champs :
    name qui contient les noms de tous les fichiers répertoriés par dir
    date qui contient la date de modif de chaque fichier
    isdir pour indiquer si c'est un répertoire ou non

    MaCellule est un tableau de cellules, donc on utilise MaCellule(1) pour accéder à la première cellule et MaCellule(1).entries pour accéder à la première entrée (les données de la première cellule)

Discussions similaires

  1. Automation, projet de stage
    Par Merihem dans le forum C++
    Réponses: 5
    Dernier message: 17/06/2009, 11h47
  2. [GeoTools] Projet de stage avec GeoTools 2.3.3
    Par eclesia dans le forum SIG : Système d'information Géographique
    Réponses: 2
    Dernier message: 19/04/2009, 18h22
  3. [PHP 4] Projet de Stage : réalisation d'un CMS
    Par _Sandwich_ dans le forum Langage
    Réponses: 5
    Dernier message: 02/02/2009, 18h30
  4. [choix entreprise] Projet et Stage de fin d'études
    Par ikkyu_os dans le forum Stages
    Réponses: 2
    Dernier message: 23/10/2005, 22h55

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