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

MATLAB Discussion :

Matrice à valeur gaussien


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2007
    Messages : 6
    Par défaut Matrice à valeur gaussien
    Bonjour,
    comment je peux crée une matrice de vecteur gaussien normal iid de dimenssion nt*nr.
    Merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 62
    Par défaut
    Citation Envoyé par scorpion-ca Voir le message
    Bonjour,
    comment je peux crée une matrice de vecteur gaussien normal iid de dimenssion nt*nr.
    Merci


    Plusieurs cas selon ma compréhension de ta question.

    -Si tu désires seulement avoir une matrice ou chaque éléments (réalisations) est indépendent l'un de l'autre. Par exemple chaque élément, n_{ij}~N(m,sigma²), tu peux faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    m      = 1;
    sigma =  2;
    nt      = 3;
    nr      = 4;
     
    A       =  m + sigma.*randn(nt , nr);
    Tu peux également remplacer m et sigma par 2 matrices (nt x nr) M et S respectivement, si chaque composante doit être générée avec ses propres premiers moments :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    A        = M + S.*randn(nt , nr);
    - Si il ne sont pas indépendants, c'est à dire que chaque colonne de ta matrice est une réalisation d'un vecteur multidimensionnel gaussien, i.e. z~N(M , \Sigma), avec M le vecteur moyenne (nt x 1) et \Sigma (nt x nt), matrice de covariance définie positive. Là tu passes par exemple par une factorisation de cholesky :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    nr       = 100;
    M       = [1;2];
    Sigma  = [1 , 0.2 ; 0.2 , 2];
     
     
    A      = M(: , ones(1 , nr)) + chol(Sigma)'*randn(nt , nr);


    Voilà ....

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2007
    Messages : 6
    Par défaut
    Merci

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2007
    Messages : 6
    Par défaut
    bonjour,

    lorsque j ai executé le troisieme code un message d erreur apparait

    ??? Error using ==> chol
    Matrix must be positive definite.

    Error in ==> gaussien_n_i at 31
    H = M(: , ones(1 , nt)) + chol(Sigma)'*randn(nr , nt);

    Avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sigma = randn(nr,nt)
    m = randn(nr,1)
    Merci

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 62
    Par défaut
    Citation Envoyé par scorpion-ca Voir le message
    bonjour,

    lorsque j ai executé le troisieme code un message d erreur apparait

    ??? Error using ==> chol
    Matrix must be positive definite.

    Error in ==> gaussien_n_i at 31
    H = M(: , ones(1 , nt)) + chol(Sigma)'*randn(nr , nt);


    Avec sigma = randn(nr,nt)
    m = randn(nr,1)
    Merci


    C'est normal .... rien ne te garantie qu'en tapant sigma = randn(nr , nt), sigma soit une matrice définie positive (même aucune chance ) .... Ce que tu peux faire, c'est :

    A = rand(nr , nt);

    sigma = A*A';


    La ca devrait passer .... Tu devrais réviser ce que représente une matrice de covariance notamment dans les processus Gaussiens multivariés car avec ta question je subodore quelques lacunes ....


    Sébastien

Discussions similaires

  1. Réponses: 8
    Dernier message: 05/05/2009, 08h36
  2. Matrice à valeur de rice
    Par scorpion-ca dans le forum MATLAB
    Réponses: 1
    Dernier message: 09/11/2007, 11h33
  3. tri des valeurs d'une matrice
    Par suzanne loubert dans le forum Langage
    Réponses: 2
    Dernier message: 07/12/2005, 03h47
  4. Attribution de valeur à une matrice
    Par Progs dans le forum C++
    Réponses: 13
    Dernier message: 24/09/2005, 23h43
  5. valeurs propres d'une matrice et vecteurs propres
    Par la_fantomas dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 01/05/2005, 15h35

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