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 :

lecture d'un fichier [Débutant]


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 19
    Points : 7
    Points
    7
    Par défaut lecture d'un fichier
    Bonjour,

    J'ai besoin d'une petite aide concernant la lecture d'un fichier excel par matlab. J'ai utilisé la fonction xlsread pour que matlab puisse lire mon fichier, mais maintenant j'aimerais le forcer à lire les entrées à une fréquence donnée.
    Par exemple faire une commande qui dit "lire les entrées lignes toutes les 20ms" . Comment je peux faire ?
    Merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 315
    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 315
    Points : 52 942
    Points
    52 942
    Par défaut
    Dans ce cas, il faut intégrer ton code de lecture dans un objet Timer

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 19
    Points : 7
    Points
    7
    Par défaut
    J'arrive pas à comprendre la syntaxe du timer object.

  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 315
    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 315
    Points : 52 942
    Points
    52 942
    Par défaut
    Voici l'idée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function test
     
    tim = timer('timerfcn',@tfcn,'period',0.02,'executionmode','fixedrate',...
        'tag','xlstim');
     
    start(tim);
     
     
    function tfcn(obj,event)
     
    [...] = xlsread(...);
    Pour arrêter proprement le Timer, tu dois faire ceci à la fin de ton code (ou du moins au moment voulu) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    t = timerfind('tag','xlstim');
    stop(t)
    delete(t)

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 19
    Points : 7
    Points
    7
    Par défaut
    Ca ne marche pas...

    Alors mon code lit des fichiers excel que Matlab devra traiter sous forme de matrices.
    Ca donne ça:

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    function [Mat_Source,Mat_identification,Mat_Shift,Threshold]=lecture_fichier(filename_source,filename_shift,filename_threshold)
     
     
    %Lecture du fichier source et recuperation des données et des codes correspondants
    [Mat_Source,Codes] = xlsread(num2str(filename_source));
     
    %Récuperation des noms des parametres correspondant aux codes du fichier
    %source
    [Num,Mat_Codes_ref] = xlsread('Codes_et_noms');
     
    %Creation de la matrice d'identification qui associe aux données contenues dans Mat_source les noms des paramètres
     
    for ind = 1:size(Mat_Source,2)
     
        %Comparaison des codes extraits du fichier source avec les codes de reference
        Buff = strcmp(Codes,Mat_Codes_ref(1,ind));
     
        %Identification de la position du code parametre qui match
        Pos_Match = find(Buff == 1);
     
        %Remplissage de la première ligne matrice d'identifcation (position)
    %     Mat_identification(1,ind) = Mat_Codes_ref(1,Pos_Match);
     
        %Remplissage de la seconde ligne matrice d'identifcation (nom du paramètre correspondant)
        Mat_identification(ind) = Mat_Codes_ref(2,Pos_Match); 
     
    end
     
    %% Récupération des seuils d'acceptation de chacun des paramètres
     
    [Threshold]=xlsread(num2str(filename_threshold));
     
     
    %% Récupération du scénario d'asynchronisme
     
    %Lecture du fichier 
    [Mat_Shift] = xlsread(num2str(filename_shift));
     
    end
    Où est ce que tu la places la commande timer ?

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 315
    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 315
    Points : 52 942
    Points
    52 942
    Par défaut
    Je crois que je n'avais pas bien compris ta question. J'étais partis sur un code qui lisait un fichier Excel toutes les 20 ms écoulés. Je pensais que ce fichier était rempli en continu et que tu avais besoin d'y accéder à intervalle régulier.

    Il me semble plutôt que ton fichier Excel ne change pas mais que tu ne souhaites accéder qu'à certaines lignes en fonction d'un paramètre "fréquence", c'est ça ?

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 19
    Points : 7
    Points
    7
    Par défaut
    Alors mon fichier excel a 18000 lignes et 45 colonnes, j'aimerais que matlab lise les ligne une par une à intervalle régulier de 20 ms, c'est à dire que toutes les 20 ms matlab exécute son calcul avec la ligne lue.
    Il faudrait que la fréquence de lecture soit modulable parce que ce que je veux c'est savoir ce qui se passe à haute fréquence.

  8. #8
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 315
    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 315
    Points : 52 942
    Points
    52 942
    Par défaut
    Prenons un exemple plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    M = rand(5,3)
     
    xlswrite('test.xls',M,1,'A1:C5');
    Pour lire chaque ligne à intervalle régulier de 20 ms :
    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
    function test
     
    nligne = 1;
     
    tim = timer('timerfcn',@tfcn,'period',0.02,'executionmode','fixedrate',...
        'tag','xlstim');
     
    start(tim);
     
     
        function tfcn(obj,event)
     
            r = sprintf('A%d:C%d',nligne,nligne);
            V = xlsread('test.xls',1,r);
     
            if isempty(V)
                stop(tim);
                delete(tim)
            else
                nligne = nligne+1;
                disp(V)
            end
     
        end
    end
    Maintenant, vu le temps très court que tu imposes à ton programme, je doute qu'il puisse lire effectivement le fichier toutes les 20 ms.

    Je pense que rien que l'ouverture et la fermeture du fichier par XLSREAD dépasse déjà ces 20 ms.

    Il faudrait plutôt accéder au fichier en utilisant un controle ActiveX ou la fonction WLSWRITE1 => : Comment interfacer MATLAB avec Excel ?

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

Discussions similaires

  1. Lecture d'un fichier .dbf
    Par San Soussy dans le forum Autres SGBD
    Réponses: 8
    Dernier message: 07/07/2004, 16h30
  2. Réponses: 6
    Dernier message: 02/09/2003, 15h12
  3. Lecture et ecriture fichier .ini
    Par despe dans le forum C
    Réponses: 6
    Dernier message: 23/07/2003, 20h40
  4. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 4
    Dernier message: 05/02/2003, 08h54
  5. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 2
    Dernier message: 11/06/2002, 10h24

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