Matlab - Normalisation fft?
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

Matlab - Normalisation fft?



  1. #1
    Minialoe67

    Matlab - Normalisation fft?


    ------

    Bonjour,

    J'ai un signal périodique et je souhaite récupérer la fréquence fondamentale pour pouvoir découper ce signal en cycles (sur Matlab).
    ici sur Mathworks, j'ai trouvé comment faire : https://fr.mathworks.com/help/matlab...=doc_srchtitle (grâce à l'exemple)
    Ca marche très bien sur mon signal, cependant je ne comprends pas une partie. Pouvez vous m'expliquer ce que je comprends moins bien?

    Y = fft(X);

    Compute the two-sided spectrum P2. Then compute the single-sided spectrum P1 based on P2 and the even-valued signal length L.

    P2 = abs(Y/L); % Pourquoi doit on diviser par la longueur du signal?
    P1 = P2(1:L/2+1); Que fait-on ici? A quoi cela sert-il?
    P1(2:end-1) = 2*P1(2:end-1);Que fait-on ici? A quoi cela sert-il?

    Define the frequency domain f and plot the single-sided amplitude spectrum P1. The amplitudes are not exactly at 0.7 and 1, as expected, because of the added noise. On average, longer signals produce better frequency approximations.

    f = Fs*(0 : (L/2))/L; Que fait-on ici? A quoi cela sert-il?
    plot(f,P1)
    title('Single-Sided Amplitude Spectrum of X(t)')
    xlabel('f (Hz)')
    ylabel('|P1(f)|')



    Merci beaucoup pour votre aide

    -----
    Minialoe67

  2. #2
    Antoane
    Responsable technique

    Re : Matlab - Normalisation fft?

    Bonjour,
    Citation Envoyé par Minialoe67 Voir le message
    P2 = abs(Y/L); % Pourquoi doit on diviser par la longueur du signal?
    Car c'est ainsi
    Je ne sais pas


    P1 = P2(1:L/2+1); Que fait-on ici? A quoi cela sert-il?
    P1(2:end-1) = 2*P1(2:end-1);Que fait-on ici? A quoi cela sert-il?
    Si tu demandes figure, plot(abs(Y)), tu observes que le spectre est calculé en double : la moitié droite est le symétrique de la moitié gauche. Il y a deux fois trop de raies fréquentielles car la moitié correspond à des fréquences négatives. Dans la première ligne de code, on ne garde donc que la moitié du spectre, correspondant aux fréquences positives. Dans la seconde, on on reporte l'énergie contenues dans les raies à fréquence négatives sur les raies à fréquence positive en multipliant par 2 l'amplitude des raies positives. L'amplitude de la raies de fréquence nulle n'est pas multipliée par deux car elle n'a pas de symétrique (ou, plutôt, que son symétrique lui est déjà superposé).

    f = Fs*(0 : (L/2))/L; Que fait-on ici? A quoi cela sert-il?
    On fabrique un vecteur contenant les fréquences des raies considérées.
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  3. #3
    Minialoe67

    Re : Matlab - Normalisation fft?

    oh merci ! Ca m'aide !
    Minialoe67

  4. #4
    Minialoe67

    Re : Matlab - Normalisation fft?

    Maintenant, si je continue plus loin, grâce à cette méthode je trouve la fréquence fondamentale de mon signal périodique.
    Si je repasse en temporel, je sais tous les combien de T (T=1/frequence) je peux découper mon signal.
    Existe-t-il une méthode automatique dans matlab pour découper les périodes du coup?
    (Si non, pourriez vous me dire brièvement comment procéder?)

    Merci !

    Ps: je sais découper un signal avec findpeaks mais c'est assez contraignant car il faut définir MinPeakHeigth, etc... et ça change selon le signal que j'ai...
    Minialoe67

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

    Re : Matlab - Normalisation fft?

    Car c'est ainsi
    Je ne sais pas
    Pour faire simple, tu as un compromis à choisir lorsque tu implémente un algorithme type FFT, entre chaque tour de papillon:
    - tu normalises: avantage tu gardes ta dynamique, inconvénient tu dégrades la précision du calcul
    - tu ne normalises pas: avantage tu gardes ta précision, inconvénient tu peux exploser ta dynamique
    Dans ce dernier cas, il est laissé à la discrétion de l'utilisateur de normaliser ou pas, avec le "léger" avantage de n'appliquer 1 seule multiplication sur ton tableau, plutot que autant que de tour de papillon.
    MATLAB fonctionne en flottant, tu n'as pas de problème de dynamique -> autant garder la précision d'où ce choix je pense.
    Dernière modification par lou_ibmix_xi ; 17/02/2017 à 14h37.

  7. #6
    Minialoe67

    Re : Matlab - Normalisation fft?

    qu'appelez vous dynamique?
    Minialoe67

  8. #7
    Antoane
    Responsable technique

    Re : Matlab - Normalisation fft?

    Bonjour,

    Merci pour les explications, lou_ibmix_xi.
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  9. #8
    lou_ibmix_xi

    Re : Matlab - Normalisation fft?

    Citation Envoyé par Minialoe67 Voir le message
    qu'appelez vous dynamique?
    L'étendue représentable par le codage, si tu as par exemple 1 bit de signe, 11 bits avant et 20 bits après la virgule, tu ne peux pas dépasser +/-2048

Discussions similaires

  1. Normalisation
    Par petrifie dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 25/10/2015, 14h57
  2. Normalisation
    Par LuchoGonzalez dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 25/10/2012, 15h05
  3. normalisation des lignes d'une matrice sur Matlab
    Par inviteb8477130 dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 29/06/2010, 09h49
  4. normalisation
    Par tpscience dans le forum Physique
    Réponses: 0
    Dernier message: 15/06/2010, 15h47
  5. Normalisation
    Par invite169be908 dans le forum Technologies
    Réponses: 1
    Dernier message: 02/08/2004, 18h54
Découvrez nos comparatifs produits sur l'informatique et les technologies.