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 :

calcul du temps de réponse d'un filtre passe bande


Sujet :

Signal

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 4
    Par défaut calcul du temps de réponse d'un filtre passe bande
    Bonjour tout le monde,
    Vu que je suis un nouveau arrivant, je vous salue tous et toutes.

    Et voilà, je suis sur un problème facile à résoudre avec un papier et un stylo, mais un peu plus compliqué.
    le problème est le suivant:
    j'ai un signal (une sinus tronquée). Je voudrais filtrer ce signal avec un filtre passe bande pour avoir seulement des composantes fréquentielles à la bande de passante à -3dB. la signal temporelle filtré est décalé dans le temps, alors je voudrais calculer le temps de réponse de ce filtre. Et si ce décalage est dû à la convolution faite dans la fonction filtre de matlab, comment savoir faire correspondre en temps le signal filtré au signal d'origine?
    j'espère avoir été clair
    le bout de code de matlab est le 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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    LB=0.57e9;   %largeur de bande
    alpha=1/LB;
    Tmin=0;%-3.*alpha;
    Tmax=20e-9;%75.*alpha;
    smp=1024;
    t=linspace(Tmin,Tmax,smp);
     
    tau=alpha/(2.*sqrt(pi)); 
    x1=sin(2.*pi.*fc.*t);
    % ----------
    % fenêtrage
    % ----------
    A=1;
    w1=1/sqrt(2.*pi.*tau^2).*exp(-((t-alpha)./sqrt(2)./tau).^2);        % fenêtre gaussienne 
    % ----------------------------------------
    xx1=w1.*x1;
    xx1=xx1./(max(xx1));    % normalisation par rapport au maximum
    res_tran=[res_tran xx1'];
    XX1=fftshift(abs(fft(xx1)))./length(t);
     
     
    res_freq=[res_freq XX1'];
    dt=(Tmax-Tmin)/smp;%1./fs;       % période d'échantillonnage
    fs=1./dt;
    T=length(xx1).*dt;      %temps de la fenêtre
    df=1./T;        %fréquence fondamentale
     
    figure(1);
    gcaT=subplot(121); plot(t,xx1);grid on;hold on; 
     
    xlabel('Time, sec');ylabel('Amplitude');
     
    DSP=fft(xx1);
    NN=length(DSP);
    DSP=DSP/NN;
    DSP=fftshift(abs(DSP).^2./df.^2);
    ESS=2.*DSP(NN/2+1:NN);
     
    f=linspace(0,fs/2,length(DSP)/2);
    xlabel('Frequency, Hz');ylabel('Magnitude');grid on;
    [ss_E,f_high,f_low,BW,f_central]=BW_Eval(xx1,ESS,dt,-3);
    gcaF=subplot(122);
    set(findobj('Type','line'),'Color','b')
    Wn=2.*[f_low f_high]/fs;
    n=smp;
    b=fir1(n,Wn);
    xx1f=filter(b,ones(1,1024),xx1);
     
    figure(1);
    gcaT=subplot(121); hold on;plot(t,xx1f,'r');grid on;
     
    xlabel('Time, sec');ylabel('Amplitude');
    dtf=(Tmax-Tmin)/smp;%1./fs;       % période d'échantillonnage
    fs=1./dt;
    Tf=length(xx1f).*dtf;      %temps de la fenêtre
    dff=1./Tf;        %fréquence fondamentale
    DSPf=fft(xx1f);
    NNf=length(DSPf);
    DSPf=DSPf/NNf;
    DSPf=fftshift(abs(DSPf).^2./dff.^2);
    ESSf=2.*DSPf(NNf/2+1:NNf);
     
    f=linspace(0,fs/2,length(DSPf)/2);
    ind=find(f>0);
    f_pos=f(ind);
    xlabel('Frequency, Hz');ylabel('Magnitude');grid on;
     
    [ss_Ef,f_highf,f_lowf,BWf,f_centralf]=BW_Eval(xx1f,ESSf,dtf,-3);

  2. #2
    Expert confirmé
    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
    Par défaut
    Pourrais-tu préciser ta question ?
    As-tu un problème avec le code que tu nous montre ?
    Si oui quel type de problème et à quel endroit ?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 4
    Par défaut
    le pb est le suivant:
    j'ai un signal que filtre avec un filtre passe bande. le signal filtré est décalé en temps, je voudrais calculer ce retard par rapport au signal d'origine.
    Merci

  4. #4
    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 exemple :
    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
    clear
    T=0.001;
    fe=1/T;
    t=0:T:4;
    Nx=length(t);
    Ts=1/2;
    x=sin(2*pi*t/Ts);%Signal
    [b,a]=butter(2,[0.5 4]/(fe/2));
    figure(1)
    w=(0:Nx-1)/Nx*fe;
    H=freqz(b,a,w,fe);
    semilogx(w,abs(H))
    grid
    s=filter(b,a,x);
    figure(2)
    dt=2000:2500;
    plot(t(dt),x(dt))
    hold on
    plot(t(dt),s(dt),'r')
    grid
    [C1,I1]=max(x(dt))
    [C2,I2]=max(s(dt))
    ['Retard = ' num2str((I1-I2)*T) ' seconde' ]
    ['Phase = ' num2str((I1-I2)*T*2*pi/Ts) ' degré']

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 4
    Par défaut
    Citation Envoyé par phryte Voir le message
    dt=2000:2500;

    [/CODE]
    Bonjour, Merci pour l'exemple. Mais je n'ai pas saisi la façon dont tu determines l'index dt.

  6. #6
    Membre éprouvé
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Par défaut
    Salut!

    As-tu essaye regarder le video tutoriel d'ici?


    http://www.5min.com/Video/Simulink--...rt-1-141044094



    C'est bien explique!

    Amicalment,

    Michel

  7. #7
    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
    tu determines l'index dt.
    Tu cherches une plage en régime établi.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 4
    Par défaut
    Merci Mihaispr pour ce video,
    mais mon souci est de derterminer le retard du à mon filtre. c'est plutôt la base de temps du signal filtré que je voudrais determiner pour le comparer au signal original. après ca je voudrais calculé le retard pour savoir à partir de quel moment ma sinus tronquée (dans mons code) debute.

    cordielement
    Asturias1

  9. #9
    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.
    je voudrais calculé le retard
    Le retard d'un filtre est donné par le temps de propagation qui est la dérivée de la phase.
    Matlab a l'instruction : grpdelay :
    Exemple pour un passe-bas :
    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
    clear
    T=0.001;
    fe=1/T;
    [b,a] = butter(2,100/(fe/2));
    gd = grpdelay(b,a,128);
    [h,f] = freqz(b,a,128,fe);
    pd = -unwrap(angle(h))*(fe/(2*pi))./f;
    plot(f,gd,'-',f,pd,'--')
    axis([0 fe/2 -5 5])
    legend('Group Delay','Phase Delay')
    grid
    figure(2)
    t=0:T:0.04;
    x=ones(1,length(t));
    s=filter(b,a,x);
    plot(t,x)
    hold on
    plot(t,s,'r')
    grid

Discussions similaires

  1. Outil pour le calcul du temps de réponse
    Par jowelle dans le forum Services Web
    Réponses: 2
    Dernier message: 26/11/2013, 13h27
  2. [OL-2007] calculs du temp de réponse des mails sous outlook
    Par lezba dans le forum VBA Outlook
    Réponses: 1
    Dernier message: 03/04/2012, 05h01
  3. Calcul du temps de réponse d'une liaison 3G ?
    Par abdeljaouad dans le forum Hardware
    Réponses: 6
    Dernier message: 15/10/2010, 13h57
  4. calculer le temps de réponse d'un serveur
    Par badrodoja dans le forum Java ME
    Réponses: 4
    Dernier message: 16/05/2010, 20h43
  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