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

Signal Discussion :

Chargement de fichiers et filtre passe bande


Sujet :

Signal

Vue hybride

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 16
    Par défaut Chargement de fichiers et filtre passe bande
    Bonjour,

    Voici mon programme :


    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
    clear all
    close all
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1998
    load('fichier1.txt')
    jour=fichier1(1:length(fichiers1),2);
    mois=fichier1(1:length(fichier1),3);
    annee=fichier1(1:length(fichier1),4);
    heure=fichier1(1:length(fichier1),5);
     
    conversion_mois % conversion du mois en seconde
    t=((jour-1)*24*3600+heure*3600+mois);
    y=fichier1(:,6);
     
    c=zeros(1:2*(length(y)),1);
     
    %Interpolation des données (pour pouvoir observer des fréquences allant jusque 1/10min sur le spectre)
    for i=1:length(y)
        c(2*(i-1)+1)=y(i);
    end
    for i=1:length(c)/2
        c(2*i)=(c(2*i-1)+c(2*i+1))/2;
    end
     
    %%FFT
    Y=fft((c));
    N=length(c);
    df=1/(max(t)-min(t));
    f=(0:1:N/2)*df;
    figure(1)
     
    hold on
     
    loglog(f(2:N/2+1),abs(Y(2:N/2+1)))
    a=f(2:N/2+1);
    b=abs(Y(2:N/2+1));
    title('S(f) - 1950')
    xlabel('f (Hz)')
    ylabel('S(f)')
    hold off
    D'une part j'aimerai savoir si vous connaissez une commande permettant de faire une boucle pour charger les noms de fichiers (car j'ai beaucoup de fichiers à charger et à manipuler et je veux éviter les copier-collers)
    D'autre part je veux filtrer mon signal avec un filtre passe bas pour n'observer le spectre que sur la bande de fréquence [1/5400 1/600].
    J'ai essayé d'utiliser filter, fir1 mais je n'ai pas réussi et ne suis pas sûr de m'y être bien pris. Ce serait sympa si vous pouviez m'aider.

    Merci !

  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 317
    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 317
    Par défaut
    Citation Envoyé par Caroline_1 Voir le message
    D'une part j'aimerai savoir si vous connaissez une commande permettant de faire une boucle pour charger les noms de fichiers (car j'ai beaucoup de fichiers à charger et à manipuler et je veux éviter les copier-collers)
    Voir la : Comment nommer une suite de fichiers : nom_1.ext, nom_2.ext... nom_N.ext ?

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Par défaut
    Bonjour.
    un filtre passe bas pour n'observer le spectre que sur la bande de fréquence [1/5400 1/600].
    Tu peux utiliser Butterworth.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [numz,denz]=butter(n,[f1,f2]/(fe/2))
    avec n l'ordre du filtre (multiple de 2)
    puis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s=filter(numz,denz,signal)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 16
    Par défaut
    Tout d'abord merci. J'ai chargé mes fichiers comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for n=1:1000
    load(['fichier0' num2str(n) '.txt'])
    A=[str2mat(['fichier0',num2str(n)])]
    end
    Mais le problème que j'ai maintenant c'est que A est une chaîne de caractère à savoir 'fichier01' et pas la matrice associée au fichier01 comme je le voudrais. Savez-vous comment résoudre cela ?

    D'autre part j'ai utilisé le filtre suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fs=1/600;
    Wn=[1/5400 1/601]/fs;
    b=fir1(length(y)-1,Wn,'bandpass')
    et si je veux l'appliquer à mon signal défini par le vecteur y il suffit que je fasse y*1./b ? parce que je ne sais pas comment l'appliquer d'autant plus qu'avec cette solution il faut obligatoirement que l'ordre de mon filtre soit : length(y)-1.

    Merci beaucoup à vous et bonne soirée !

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 16
    Par défaut
    Désolé j'avais oublié ceci :

    la solution ne serait pas :
    ?
    Dans ce cas comment est-ce que je choisis l'ordre de mon filtre ?

    Encore bonne soirée !

  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 317
    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 317
    Par défaut
    Il faut faire comme ceci dans ce cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for n=1:1000
       str = ['fichier0' num2str(n)];
       S = load([str '.txt']);
       A = S.(str)
    end

Discussions similaires

  1. calcul du temps de réponse d'un filtre passe bande
    Par Asturias1 dans le forum Signal
    Réponses: 8
    Dernier message: 13/07/2009, 11h37
  2. Appliquer un filtre passe-bande à un son .wav
    Par jems87 dans le forum Signal
    Réponses: 6
    Dernier message: 23/12/2008, 19h49
  3. Filtre passe bande
    Par vanhelsing69 dans le forum Signal
    Réponses: 8
    Dernier message: 17/12/2008, 18h01
  4. Filtre passe bande
    Par zinzaf dans le forum LabVIEW
    Réponses: 2
    Dernier message: 15/06/2008, 09h55
  5. Filtre passe Bande
    Par Mau dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 28/06/2002, 17h03

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