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 :

Formule Information Mutuelle et Code?


Sujet :

MATLAB

  1. #1
    Membre averti
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2011
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2011
    Messages : 456
    Points : 384
    Points
    384
    Par défaut Formule Information Mutuelle et Code?
    Salut.

    je suis entraine de calculer l'information mutuelle entre 2 variables ,
    apres un recherche j'ai trouve des functions dans le site du Matlab
    en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    z = mutualInformation(e',(original_message));
    Error :
    ??? Error using ==> sparse
    Sparse matrix sizes must be non-negative integers less than MAXSIZE as
    defined by COMPUTER.  Use HELP COMPUTER for more details.
    
    Error in ==> mutualInformation at 16
        Mx = sparse(idx,x,1,n,k,n);
    qu'est ce qu'il faut faire ?

    Merci d'avance

  2. #2
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    k ou n doit être nul ou négatif.

    menu debug / stop if error/warning

    cocher : always stop ...

    puis relance ton programme. Quand il se plantera, tu pourra inspecter la valeur des variables et savoir ainsi celle qui est pas dans les clous.
    "La vraie grandeur se mesure par la liberté que vous donnez aux autres, et non par votre capacité à les contraindre de faire ce que vous voulez." Larry Wall, concepteur de Perl.

  3. #3
    Membre averti
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2011
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2011
    Messages : 456
    Points : 384
    Points
    384
    Par défaut
    Salut.
    l'erreur est dans l'instructin suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Mx = sparse(idx,x,1,n,k,n);
    voici les resultats dans l'attache , je ne comprends pas ou se fait l'erreur, il n'ya pas des nombres negatives,
    Images attachées Images attachées  

  4. #4
    Invité
    Invité(e)
    Par défaut
    Salut,

    ??? Error using ==> sparse
    Sparse matrix sizes must be non-negative integers less than MAXSIZE as
    defined by COMPUTER. Use HELP COMPUTER for more details.

  5. #5
    Membre averti
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2011
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2011
    Messages : 456
    Points : 384
    Points
    384
    Par défaut
    Salut

    1.comment je peux connaitre le size du sparse matrice ?
    2.je ne sais pas comment utiliser la variable computer,
    error dans l'attache.
    Images attachées Images attachées  

  6. #6
    Invité
    Invité(e)
    Par défaut
    Tu as aussi le droit de copier ces lignes et de les mettre dans des balises [code]
    Sinon computer en minuscules :

  7. #7
    Membre averti
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2011
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2011
    Messages : 456
    Points : 384
    Points
    384
    Par défaut
    Bonsoir
    je ne comprends pas pourquoi il ya un erreur
    j'ai vu le document du sparse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    S = sparse(i,j,s,m,n,nzmax) uses vectors i, j, and s to generate an m-by-n sparse matrix such that S(i(k),j(k)) = s(k), with space allocated for nzmax nonzeros. Vectors i, j, and s are all the same length. Any elements of s that are zero are ignored, along with the corresponding values of i and j. Any elements of s that have duplicate values of i and j are added together.
     
    Note   If any value in i or j is larger than the maximum integer size, 2^31-1, then the sparse matrix cannot be constructed.
    pour moi


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     max(idx)
     
    ans =
     
         1048576
    j'ai pas depaase 2^32-1,
    je pense qu'il ya un erreur dans l'alogorithme,

  8. #8
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    c'est toujours pour l'instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Mx = sparse(idx,x,1,n,k,n);
    avec les valeurs de ta capture d'écran? Si oui, alors les agruments 3 et 4 sont les dimensions de ta matrice (et donc doivent être des entiers) or tu donnes k=3.9557 ...
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  9. #9
    Membre averti
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2011
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2011
    Messages : 456
    Points : 384
    Points
    384
    Par défaut
    Bonjour.
    oui c'est vrai .

    Mais si je prend l'erreur est le meme.

    moi je suis entraine d'utilise une fonctionne predefini , j'ai la trouve sur le site du Mathworks.

    le code est le suivant :

    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
    25
    26
    27
    28
    29
    30
    31
     
    function z = mutualInformation(x, y)
    % Compute mutual information I(x,y) of two discrete variables x and y.
    % Written by Mo Chen (mochen80@gmail.com).
     
        assert(numel(x) == numel(y));
        n = numel(x);
        x = reshape(x,1,n);
        y = reshape(y,1,n);
     
        l = min(min(x),min(y));
        x = x-l+1;
        y = y-l+1;
        k = max(max(x),max(y));
     
        idx = 1:n;
        Mx = sparse(idx,x,1,n,k,n);
        My = sparse(idx,y,1,n,k,n);
        Pxy = nonzeros(Mx'*My/n); %joint distribution of x and y
        Hxy = -dot(Pxy,log2(Pxy+eps));
     
        Px = mean(Mx,1);
        Py = mean(My,1);
     
        % entropy of Py and Px
        Hx = -dot(Px,log2(Px+eps));
        Hy = -dot(Py,log2(Py+eps));
     
        % mutual information
        z = Hx + Hy - Hxy;
    endfunction

Discussions similaires

  1. Information sur un code barre
    Par corgato dans le forum MySQL
    Réponses: 1
    Dernier message: 10/09/2010, 12h30
  2. Embarquer plus d'informations dans le code: la précision et la complexité
    Par kaukau dans le forum Langages de programmation
    Réponses: 11
    Dernier message: 24/10/2009, 02h01
  3. Réponses: 0
    Dernier message: 09/06/2009, 00h10
  4. recalage d'images par information mutuelle
    Par abdidou dans le forum Traitement d'images
    Réponses: 2
    Dernier message: 07/05/2007, 10h25

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