Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

normalisation des lignes d'une matrice sur Matlab



  1. #1
    hell_

    normalisation des lignes d'une matrice sur Matlab


    ------

    Bonjour, j'ai une question concernant la normalisation des matrices sur matlab. j'ai par exemple, la matrice suivante A=[1 2, 3 4]
    et je souhaite normaliser les lignes de ma matrice cela revient à diviser chaque élément par la somme des éléments de la lignes ainsi la somme des éléments de ma matrice normalisée vaudra 1 , par celà j'espère obtenir B=[ 1/(1+2) 2/(1+2), 3/(3+4) 4/(3+4)]; sauf que avec mon programme Matlab je n'obtient pas du tout cela, mon programme est comme suit:

    for i=1:2
    for j=1:2
    A(i,j)=A(i,j)./sum(A(:,i)
    end
    end

    Auriez vous une idée ou une solution à me proposer, svp, c'est très urgent!! Merci par avance!!

    fille désespérée

    -----

  2. #2
    Hiruma

    Re : normalisation des lignes d'une matrice sur Matlab

    Bonjour, voila une fonction qui réponds à ta question. :

    function resultat = normaliser (Matrice)

    v = sum(Matrice,'c'); // vecteur colonne contenant la somme des lignes de la matrice

    resultat = Matrice./(v*ones(Matrice(1,: )));

    endfunction

    Il faut éviter les boucles "for" en Scilab, le logiciel n'est pas efficace avec ça.

    Si néanmoins tu veux persister sur ta lancé, je te conseille de commencer par créer un vecteur avec la somme des lignes de la matrice. Ensuite tu parcours la matrice par ligne uniquement (un seul "for" suffit), et à chaque colonne de la ligne "i", tu divises les composantes de ta matrice par la i-ème composante de ton vecteur somme....
    Dernière modification par Hiruma ; 29/06/2010 à 09h01.

  3. #3
    Hiruma

    Re : normalisation des lignes d'une matrice sur Matlab

    Pardon, je viens de voir les erreurs dans

    A=[1 2, 3 4]

    for i=1:2
    for j=1:2
    A(i,j)=A(i,j)./sum(A(:,i)) // attention n'oublie pas cette parenthèse
    end
    end

    Ta matrice "A" est constament modifier, donc au 1er tour de "i" et 2ème tour de "j" par exemple, on a :

    A=[0.25 2, 3 4]

    et la boucle reprends avec ces valeurs.

    Il faut stocker les résultats dans une autre matrice. Par exemple on pourrait faire :

    B = A
    for i=1:2
    for j=1:2
    B(i,j)=A(i,j)./sum(A(:,i))
    end
    end

    (le résultat recherché est donc B)

    Mais une double boucle est superflue, il y a mieux comme façon de programmer.

  4. #4
    hell_

    Re : normalisation des lignes d'une matrice sur Matlab

    Merci beaucoup pour votre reponse!!

Sur le même thème :

Discussions similaires

  1. Matlab : transformée de Fourier d'une matrice de points à pas irrégulier
    Par Cédroc13 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 27/03/2009, 16h15
  2. matlab: skeletisation d'une matrice d'image
    Par kawther84 dans le forum Technologies
    Réponses: 0
    Dernier message: 29/12/2008, 14h02
  3. Normalisation des acces à la rom sur le spériphériques USB
    Par Tix dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 13/08/2008, 20h54
  4. MATLAB - Les intégrateurs ODE pour la méthode des lignes
    Par UterP dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 13/05/2007, 13h37
  5. operation sur une matrice en matlab
    Par bof dans le forum Mathématiques du supérieur
    Réponses: 5
    Dernier message: 20/05/2004, 16h27