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 :

FFt à partir d'un fichier texte


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 16
    Par défaut FFt à partir d'un fichier texte
    Bonjour à tous!

    Je suis débutante sur matlab et je dois utiliser ce logiciel afin de récupérer la deuxieme colone d'un fichier texte et en faire la transformée de fourier rapide.
    Puis je voudrais afficher à l'écran.

    pour l'instant voici mon code:
    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
     
    clear all;
    fiche=fopen('a47.txt','r') ;
    donnee=fscanf(fiche,'%g %g',[2 inf]);
    fclose(fid);
     
    [s,t]=textread('a47.txt');
    % calcul de fft
    Y=fft(s,t);
     
    % dessiner la fft
    plot(f,2*abs(Y(1:NFFT/2+1))) 
    title('Single-Sided Amplitude Spectrum of y(t)')
    xlabel('Frequency (Hz)')
    ylabel('|Y(f)|'
    Je vous avoue que je n'y comprend pas grand chose... J'ai simplement regarder différent code ressemblant à ceux que je voulais faire...
    Quelqu'un pourrait-il m'expliquer comment récupérer ces données et les afficher?

    Merci d'avance!

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Par défaut
    Citation Envoyé par mariellemm Voir le message
    pour l'instant voici mon code:
    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
    clear all;
    fiche=fopen('a47.txt','r') ;
    donnee=fscanf(fiche,'%g %g',[2 inf]); <---- un seul '%g' suffit
    fclose(fid);
    
    [s,t]=textread('a47.txt'); <---- pourquoi lire deux fois?
    % calcul de fft
    Y=fft(s,t);
    
    % dessiner la fft
    plot(f,2*abs(Y(1:NFFT/2+1)))  <------ NFFT doit être défini ainsi que f
    title('Single-Sided Amplitude Spectrum of y(t)')
    xlabel('Frequency (Hz)')
    ylabel('|Y(f)|'
    Je te propose un truc du genre :

    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
    close all ;
    clear all ;
    
    fiche=fopen('a47.txt','r') ;
    donnee=fscanf(fiche,'%g',[2 inf]); 
    s = donnee(:,1);
    t = donnee(:,2);
    fclose(fid);
    
    N = lenght(t) ;
    NFFT = 2^nextpow2(N); 
    
    Y = fft(t,NFFT)/N;
    
    spectre_t = 2*abs(Y(1:NFFT/2+1)) ;
    freq = freq_ech/2*linspace(0,1,NFFT/2+1); freq_ech = fréquence échantillonage
    
    puis plot (freq , spectre_t)..
    Mais ce n'est surement pas ça.. à quoi correspond t et s ? pourquoi dis tu que tu dois récupérer uniquement la 2ème colonne alors que tu te sers de 's' et 't' ?

    bon courage

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 16
    Par défaut
    Bonjour newenda,

    Tout d'abord merci de ton aide!
    Par conter je ne comprend pas très bien, comment ça fonctionne...
    Que signifie '%g',[2 inf]? je l'avais mis sans savoir!
    Et puis je ne comprend ce qu'est NFFT...

    En fait dans mon fichier texte, j'ai la première colonne qui est le temps et la deuxième les valeurs du signal. Est ce que pour la transformée je ne devrais pas avoir finalement une fonction dépendant du temps aussi?

    Enfin les 2 dernières lignes de ton code, c'est pour faire le tracé?

    Encore merci pour ton aide!

  4. #4
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    Bonjour,

    Citation Envoyé par mariellemm Voir le message
    Que signifie '%g',[2 inf]? je l'avais mis sans savoir!
    Citation Envoyé par mariellemm Voir le message
    Et puis je ne comprend ce qu'est NFFT...
    La encore je pense qu'un tour sur la doc serait intéressant:

    Bonne journée,
    Duf

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Par défaut
    '%g',[2 inf] > ouvrir des variables de type g (voir opérateur matlab) sur [2 inf]..
    fait help fscanf pour en savoir plus.

    Bon en gros pour tracer un fft tu doit faire un plot(freq, spi) où freq est le vecteur de tes coordonnées fréquentielles (attention ce n'est pas fréquence d'échantillonage) et spi est le module du signal au carré
    donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    freq = [0:1/tmax:f-1/tmax]
    f = fréquence d'échantillonnage, tmax = valeur de ton temps maximum (pour l'avoir suffit de faire un max(t) si t est ton vecteur de temps défini)
    Tu peux choisir la fréquence d'échantillonnage f mais attention au théorème de Shannon ! voir Wikipédia, Le théorème de Nquyst-Shannon est le plus important en calcul du signal numérique, en gros il stipule que ta fréquence d'échantillonnage doit plus importante que celle de ton signal pour bien échantillonner

    et

    où X = fft(x)

    PS :

    si tes vecteurs comportent N éléments alors :

    N = f x tmax

    cela te permet de connaitre f

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 16
    Par défaut
    oki, c'est déjà plus clair, je suis également aller consulter l'aide.
    Ce pendant j'ai un problème avec le fscanf, il me met ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    fiche=fopen('a47.txt','r') ;
    donnee=fscanf(fiche,'%g',[2 inf]); 
    ??? Error using ==> fscanf
    Invalid fid.
    Je ne vois pas ou est l'erreur... fid normalement c'est le nom de fichier définis par le fopen il me semble.
    Une idée de ce qui bloque?

  7. #7
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    A priori il ne doit pas etre dans le bon répertoire.

    Tu devrais vérifier l'existence du fichier (EXIST) et/ou aussi utiliser le chemin complet pour l'ouvrir (FULLFILE).

Discussions similaires

  1. ajout de données à partir d'un fichier texte
    Par drakenzara dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 14/04/2006, 12h39
  2. Réponses: 4
    Dernier message: 26/01/2006, 12h03
  3. Lancer des commandes dos à partir d'un fichier texte
    Par tpdm dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 09/08/2005, 16h56
  4. état à partir d'un fichier texte
    Par onkel dans le forum Bases de données
    Réponses: 1
    Dernier message: 21/07/2005, 10h26
  5. Réponses: 11
    Dernier message: 04/08/2003, 15h30

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