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 :

Calcul pour entropie, redondance et parité


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 11
    Points : 5
    Points
    5
    Par défaut Comment calculer probabilité, entropie et redondance?
    Bonjour à tous,

    ce forum est mon dernier espoir.

    J'essaie depuis des jours de calculer l'entropie H, les probabilités Pi et la redondance R d'une image. Malheureusement je n'y arrive pas.

    Formule corrigée que j'ai :

    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
    function [Pi,H,R]=entropie(signal)
    [m,N]=size(signal);
    H=0;
    pdf=zeros(max(max(signal))+1,1);
    signal=reshape(signal,N*m,1);
    signal=signal';
    for i=1:N*m
        j=uint16(signal(i)+1);
        pdf(j)=pdf(j)+1;
    end
    for i=1:length(pdf)
        Pi(i)=pdf(i)/(N*m);
    end
    for i=1: length (pdf)
        if(Pi(i)~=0)
        H=H+Pi(i)*log2 Pi(i)*(-1);
        end
    end
    Peut-être quelqu'un aurait-il la gentillesse de m'éclairer?

    Voici mes données :

    Soit la matrice I suivante représentant les intensités des pixels d'une image de gris codée sur 8 bits de résolution (4*4)

    I= (12 12 4 4; 4 4 16 0; 6 6 6 6; 4 0 16 6)

    Il faut déjà que j'établisse une fonction entropie.m dans File -> New-> Function M-File seulement j'ai beau faire, elle ne fonctionne pas.

    La formule à utiliser pour l'entropie est :




    Celle pour la redondance :



    Hmax = Entropie maximale lorsque tous les évènements sont équiprobables.


    Voilà. Quelqu'un aurait-il une superbe solution?

    Voici le début du 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
     i=[12 12 4 4;4 4 16 0; 6 6 6 6;4 0 16 6]
     
    i =
     
        12    12     4     4
         4     4    16     0
         6     6     6     6
         4     0    16     6
     
    >> s=i(1)+i(2)+i(3)+i(4)+i(5)+i(6)+i(7)+i(8)+i(9)+i(10)+i(11)+i(12)+i(13)+i(14)+i(15)+i(16)
     
    s =
     
       106


    Merci d'avance à qui pourra ma répondre.

  2. #2
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Citation Envoyé par Mok122 Voir le message
    Il faut déjà que j'établisse une fonction entropie.m dans File -> New-> Function M-File seulement j'ai beau faire, elle ne fonctionne pas.
    Si tu nous montrais ton code, ce serait plus facile.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Ah oui, j'ai oublié pardon

    Voilà , j'ai rajouté ce que j'ai.

  4. #4
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Et moi je n'ai pas tout demandé

    Le message d'erreur ?

    cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    j=uint 16 (signal(i)+1)
    Les espaces sont un problème de typo ou tu les as vraiment ? Si oui c'est pas normal.

    Il manque un END à une des boucles FOR (l'éditeur de MATLAB doit te le dire avec des petits traits rouges à droite).
    Du coup on ne sait pas si ce sont 2 boucles l'une après l'autre ou imbriquées.

    pdf(i) est toujours 0, donc df(i) et P(i) aussi

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    C'est corrigé!

Discussions similaires

  1. Calculs pour DataReport
    Par philippef dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 09/08/2006, 12h50
  2. Réponses: 3
    Dernier message: 30/06/2006, 10h41
  3. Réponses: 9
    Dernier message: 02/05/2006, 22h17
  4. [VBA] Calcul pour insérer dans une textebox
    Par Yanmeunier dans le forum IHM
    Réponses: 13
    Dernier message: 15/03/2006, 17h38
  5. Calcul pour impression multipage
    Par Fiquet dans le forum MFC
    Réponses: 2
    Dernier message: 30/09/2005, 10h38

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