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 de MSD (mean square displacement)


Sujet :

Signal

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 11
    Points : 19
    Points
    19
    Par défaut Calcul de MSD (mean square displacement)
    Bonjour,

    Voici mon probleme: je cherche a calculer la MSD (mean square displacement) d'un signal a 1 dimension en appliquant la formule ci joint en attachement.

    Mais je pense qu'il y a une faute dans mon code, car si je l'applique a des nombres aleatoires avec l'aide de la fonction rand, je ne trouve pas une relation lineraire.

    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
    clc 
    clear all
    close all
     
    d=rand(5000,1);
    t=1:1:5000;
    GN=size(t);
    GN=GN(2);
     
    for n=1:GN
        temp = 0;
        for i=1:GN-n
            temp = temp+(d(i+n)-d(i))^2;
        end
        msd(n) = 1/(GN-n)*temp;
    end
     
    subplot(2,1,1)
    plot(t,d)
    title('Random motion')
    subplot(2,1,2)
    plot(t,msd)
    title('MSD of a random motion')
    Merci d'avance,

    Naomie
    Images attachées Images attachées  

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 123
    Points : 100
    Points
    100
    Par défaut
    Bonjour,

    1 - ton code correspond exactement à ta formule

    2 - je n'obtiens effectivement aucune relation linéaire, cependant, je ne vois pas comment ta formule pourrait en donner une sur un tel bruit.

    Tu génère un vecteur de rand : loi uniforme. Chacune de tes coordonnées de ton vecteur de rand est indépendante. Ainsi en calculant ton MSD, tu calcules seulement la moyenne des différences au carré entre deux variables aléatoires uniformes indépendantes. Ce qui donne forcément une constante pour tout n. Ce serait différent si tu générais un bruit corrélé et non pas un bruit blanc.

    Le fait que ce ne soit pas tout à fait constant est du au nombre d'échantillons pris en compte dans la moyenne, qui diminue lorsque n augmente. Si tu augmentes, tu t'approcheras de la valeur théorique et constante pour tout n.

    Enfin, à propos de cette valeur théorique, que donne ta formule ?
    Tu calcules la valeur moyenne du carré de la différence entre deux variables aléatoiresX1 et X2 indépendantes suivant une loi uniforme sur [0,1], soit :

    E([X1-X2]^2) = var(X1-X2)+E(X1-X2)^2
    E([X1-X2]^2) = var(X1-X2)
    E([X1-X2]^2) = var(X1)+var(X2) (car X1 et X2 indépendantes)
    E([X1-X2]^2) = 2*1/12 (1/12 : variance de la loi uniforme)
    E([X1-X2]^2) = 0.16666...

    C'est bien ce qu'approchent tes graphiques.

    Enfin, une petite optimisation de ton code, pour le plaisir :
    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
    clear all
    close all
     
    N=5000;
    d = rand(N,1);
     
    for n=1:N
        msd(n) = mean((d(n+1:N)-d(1:N-n)).^2);
    end
     
    subplot(2,1,1)
    plot(d)
    title('Random motion')
    subplot(2,1,2)
    plot(msd)
    title('MSD of a random motion')
    Allez, bonne soirée !
    Pour ceux qui veulent bronzer avec autre chose que des tubes cathodiques : quelques idées de balades !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [mean] Calculer la moyenne d'une matrice
    Par hanane78 dans le forum MATLAB
    Réponses: 11
    Dernier message: 21/12/2009, 00h39
  2. k-means calcul des centres
    Par wildthing dans le forum Traitement d'images
    Réponses: 2
    Dernier message: 27/05/2009, 01h11
  3. MSD calcul d'erreur
    Par naomie dans le forum Algorithmes et structures de données
    Réponses: 0
    Dernier message: 11/02/2009, 21h41
  4. Calcul proc means
    Par bb888 dans le forum SAS STAT
    Réponses: 3
    Dernier message: 08/01/2009, 23h18
  5. Root Mean Square Error
    Par Flow_75 dans le forum MATLAB
    Réponses: 6
    Dernier message: 23/10/2007, 04h18

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