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 :

Transformée simple de Hilbert


Sujet :

Signal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2011
    Messages : 1
    Par défaut Transformée simple de Hilbert
    Bonjour,

    Je suis tout nouveau sur ce forum (j'espère donc poser ma question au bon endroit)

    Je travail actuellement sur la détection de Pitch d'un son. Il y a beaucoup de façon d'obtenir cette info. Après l'avoir obtenu par simple autocorrélation je souhaiterais pouvoir travailler à partir de la transformée de Hilbert. Mais j'ai de petits soucis de compréhension.
    J'ai donc réalisé un code simple pour vous exposer mon problème.

    Je souhaite trouver la fréquence instantanée d'un sinus de 50Hz.
    Voici le 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
     
    f0 = 50;	% fréquence du sinus
    fs = 10e3;	% fréquence d'échantillonnage
    maxlag = 8192;	
    t = (1:maxlag)/fs;
    t_angle=(1:maxlag-1)/fs;
     
     
    %% Génération du sinus
    a = sin(2*pi*f0*t);
     
    %% Transformée de Hilbert
    sinus_h = hilbert(a,maxlag);
    FreqH = angle(sinus_h(2:maxlag).*conj(sinus_h(1:maxlag-1)))/2/pi;
    FreqH = FreqH*fs;
    Fx = mean(FreqH);
    Enveloppe = abs(sinus_h);
     
    %% Plot
    subplot(211)
    plot(t,a,t,Enveloppe),title('Allure du signal + Enveloppe du signal'),xlabel('Temps [s]');
    subplot(212);
    plot(t_angle,FreqH),title('Fréquence instantanée du signal'),xlabel('Temps [s]');
    Je n'arrive pas à comprendre pourquoi la fréquence instantanée n'est pas une simple constante du début à la fin. Est-ce un soucis de codage ou de compréhension.

    Merci d'avance de vos réponses

    Yann

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    La formule de la fréquence instantanée est plutôt de la forme:
    f(t) = 1/2pi * d(Phase)/dt
    Autrement dit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Phase = angle(sinus_h);
    Fx = diff(Phase)*fs/2/pi;

Discussions similaires

  1. Transformation requête imbriquée en requête simple
    Par pbatty1 dans le forum Requêtes
    Réponses: 3
    Dernier message: 12/11/2007, 16h42
  2. Comment transformé de xml en texte simple ?
    Par scaleo dans le forum C#
    Réponses: 4
    Dernier message: 23/06/2007, 18h04
  3. [FLASH MX2004] Transformer une simple ligne.
    Par -Sam- dans le forum Flash
    Réponses: 3
    Dernier message: 21/11/2006, 11h09
  4. Réponses: 3
    Dernier message: 13/07/2006, 14h22
  5. [MySQL] transformer une simple quote en double pour un insert !!
    Par st0nky dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 11/01/2006, 17h38

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