Traitement de signal en Matlab
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Traitement de signal en Matlab



  1. #1
    invitea4a9cbca

    Exclamation Traitement de signal en Matlab


    ------

    bonjour;
    s'il vous plait, pour tracer le spectre d'amplitude d'un signal sinusoidale, généralement on procède les étapes suivantes :
    on définit l'axe du temps par: t=[0:Te:tmax-Te] et f=[0:1/tmax:Fe-1/tmax] avec tmax: la durée d'enregistrement.
    et pour déclarer mon signal x(t)=cos(2*pi*f0*t).
    ma question est:
    Pourquoi on retranche Te dans t et 1/tmax dans f???
    pourquoi on normalise pas x(t)???

    merci d'avance

    -----

  2. #2
    phuphus

    Re : Traitement de signal en Matlab

    Bonjour physic___
    Citation Envoyé par physic___ Voir le message
    Pourquoi on retranche Te dans t
    Pour avoir un nombre entier de périodes et ramener la FFT à une DSF (à deux détails près : la symétrie du spectre et le formalisme du résultat, des coefficients complexes plutôt que des amplitudes de cos et sin, mais c'est strictement équivalent). Si tu ne fais pas cela, tu vois apparaître ce qui est considéré comme des artefacts, à savoir un étalement des raies spectrales.
    Le mieux est de faire l'expérience par toi-même : 2 spectres, l'un avec ce fameux -Te et l'autre sans. Tu verras qu'en t'arrêtant à tmax-Te, tu as un nombre entier de périodes sur ta sinusoïde, et donc ton spectre présente des zéros partout sauf pour f0 et Fe-f0. Si tu vas un cran plus loin, tu découpes ta sinusoïde sur un laps de temps qui n'est pas un multiple de la période de la sinusoïde, ce qui revient à ajouter un front raide à la fin de ton signal (dans le cas qui nous intéresse, cela revient surtout à ajouter un petit passage en continu, je passe ce détail). Cela va se voir sur le spectre, avec un étalement des raies spectrales autour de f0 et autour de Fe-f0.

    Citation Envoyé par physic___
    et 1/tmax dans f???
    Parce que le vecteur f commence par la composante continue "0". C'est juste un problème de piquets et d'intervalles... Si tu fais une FFT de N points, elle te renvoie N coefficients dont le premier représente la composante continue de ton signal. En créant un vecteur fréquences [0:1/tmax:Fe-1/tmax], tu as bien N fréquences présentes, avec :

    - Fréquence 0 : composante continue
    - Fréquence 1/tmax : "première" fréquence
    - Fréquence Fe/2 : fréquence de Nyquist
    - Fréquence Fe - 1/tmax : symétrique de 1/tmax par rapport à la fréquence de Nyquist, Nième fréquence du vecteur f, et donc sans surprise dernière fréquence utile (avoir le symétrique de la composante continue ne sert à rien...).

    Donc tout va bien !
    Citation Envoyé par physic___
    pourquoi on normalise pas x(t)???
    Qu'appelles-tu "normaliser" ? Est-ce que tu fais là référence à la nécessité de diviser le résultat de la FFT par le nombre de points pour avoir un spectre d'amplitude ?

  3. #3
    invitea4a9cbca

    Re : Traitement de signal en Matlab

    Donc tout va bien !

    Qu'appelles-tu "normaliser" ? Est-ce que tu fais là référence à la nécessité de diviser le résultat de la FFT par le nombre de points pour avoir un spectre d'amplitude ?
    merci pour votre explication , j'ai bien compris
    pour cette question: souvent on parle de la fréquence normalisée. donc pour réalisé un filtrage des signaux périodique:
    * leur pulsations doivent être divisé par Fe (cos(2*pi*fo*k/Fe).
    parfois on divise pas par Fe mais plutôt par Fe/2 ex: fir1(N,2*fc/fe) x=2*cos(2*pi*(500/Fe)*k) et parfois on divise ni par Fe ni par Fe/2 ex =2*cos(2*pi*500*t)
    *le résultat de la FFT doi être divisé par le nombre de points

    s'il vous plait pouvez vous m’éclairer sur ce problème???

  4. #4
    phuphus

    Re : Traitement de signal en Matlab

    Bonjour,

    la division par Fe, je ne l'ai jamais pratiquée, donc je ne vais pas pouvoir t'aider, mais je me doute bien que c'est le même genre de truc que la division par Fe/2.

    Pour cette division par Fe/2, il s'agit de se ramener en effet à une fréquence normalisée. Je ne connais que la pratique de la chose, et pas la justification théorique, d'autres personnes plus calées que moi sur cette question pourront peut-être te répondre plus précisément. Regarde par exemple l'aide de Matlab sur la commande "butter", qui précise que la fréquence de coupure doit être normalisée entre 0 et 1, avec 1 représentant la fréquence de Nyquist (donc Fe/2). D'où la division par Fe/2... Du coup, ton design de filtre est assez universel et les coefficients renvoyés seront valables relativement à la fréquence d'échantillonnage pour tout système.

    Quant au cas "pas de division", c'est le cas standard. Tu commences par construire un vecteur temps discret, et tu appliques la formule classique pour ton signal temporel cos(omega*t + Phi), avec omega = 2*pi*f.

    Donc en général :
    - génération du signal : cas standard sans division, tu obtiens quelque chose en lien direct avec la physique
    - synthèse des coefficients d'un filtre : utilisation de fréquences normalisée et donc division par Fe/2, la fréquence de coupure absolue de ton filtre n'est valable que pour une fréquence d'échantillonnage donnée

    Désolé de ne pas te donner de justifications solides du pourquoi du comment, mais sur cette question de normalisation je n'ai jamais été que simple utilisateur.

  5. A voir en vidéo sur Futura
  6. #5
    invitea4a9cbca

    Re : Traitement de signal en Matlab

    Merci beaucoup;
    non pas de problème .
    merci encore une fois

  7. #6
    invite4ffa2af4

    Re : Traitement de signal en Matlab

    bjr;svp Possible de m'aider à résoudre cet exercice ??

    On considère les 3 signaux continus suivants :
    x1(t) = cos(21t) (1a)
    x2(t) = cos(22t + =4) (1b)
    y(t) = x1(t) + x2(t) (1c)
    On échantillonne ces signaux sur N points avec une période Te. On note x1e, x2e, et ye les
    signaux échantillonnés.
    1. Pour chacun des signaux x1, x2, et y, exprimer en fonction de N, n1, et n2 la période
    d'échantillonnage maximale que l'on peut choisir sans perte d'information.
    2. Exprimer en fonction de Te et n2 le nombre de points N nécessaire pour acher environ 3
    périodes du signal x2.
    3. On ltre le signal x1e par un ltre passe-bas idéal de fréquence de coupure Fe=2. Déterminer
    le signal de sortie du ltre, noté s1(t), pour Fe = 10n1, Fe = n1, et Fe = 1
    5n1.
    Corrélation
    1. Calculer les fonctions de corrélation cx1x1 ( ), cx1x2 ( ), cx1y( ), et cyy( ) des signaux dénis
    par les équations (1).
    2. Calculer approximativement (dans le cas où T >> Te) la fonction de corrélation cx1x1 ( )
    lorsque le signal x1 est limité par une porte de demi-largeur T=2.

Discussions similaires

  1. traitement signal sous matlab
    Par invite2660b824 dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 15/07/2011, 13h30
  2. Récupération d'un signal et traitement du signal avec Matlab
    Par invite8a011b82 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 13/04/2011, 11h46
  3. matlab et traitement de signal
    Par invite873da441 dans le forum Électronique
    Réponses: 0
    Dernier message: 07/12/2009, 23h12
  4. MATLAB(traitement de signal)
    Par invite5a95ea04 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 03/06/2009, 22h27
  5. [Matlab] Traitement Numérique Signal
    Par invite6dca0fba dans le forum Électronique
    Réponses: 2
    Dernier message: 12/02/2007, 02h29