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 :

besoin d'aide sur matlab [Débutant]


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 70
    Points : 34
    Points
    34
    Par défaut besoin d'aide sur matlab
    Salut à tous, j'ai un problème sur un truc qui je pense est tout con mais je ne vois pas le truc et ça m'enerve.Alors si quelqu'un pouvait jeter un coup d'oeil.
    Voilà le code
    J'ai deux matrice x et y ne contenant que des -1 ou des 1. Je calcul les 4 trucs suivants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      tPos=sum(y==1 & x==1)
      tNeg=sum(y==-1 & x==-1)
      fPos=sum(y==-1 & x==1)
      fNeg=sum(y==1 & x==-1)
     
      lss=tPos/(tPos+fNeg)
    Je ne comprends pas comment est calculé lss.
    Par exemple 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    x = 1    -1    -1    -1    -1    -1    -1    -1    -1
         1    -1    -1    -1    -1    -1    -1    -1    -1
         1    -1    -1    -1    -1    -1    -1    -1    -1
         1    -1    -1    -1    -1    -1    -1    -1    -1
         1    -1    -1    -1    -1    -1    -1    -1    -1
         1    -1    -1    -1    -1    -1    -1    -1    -1
         1    -1    -1    -1    -1    -1    -1    -1    -1
         1    -1    -1    -1    -1    -1    -1    -1    -1
         1    -1    -1    -1    -1    -1    -1    -1    -1
         1    -1    -1    -1    -1    -1    -1    -1    -1
         1    -1    -1    -1    -1    -1    -1    -1    -1
         1    -1    -1    -1    -1    -1    -1    -1    -1
         1    -1    -1    -1    -1    -1    -1    -1    -1
         1    -1    -1    -1    -1    -1    -1    -1    -1
         1    -1    -1    -1    -1    -1    -1    -1    -1
         1    -1    -1    -1    -1    -1    -1    -1    -1
         1    -1    -1    -1    -1    -1    -1    -1    -1
         1    -1    -1    -1    -1    -1    -1    -1    -1
         1    -1    -1    -1    -1    -1    -1    -1    -1
         1    -1    -1    -1    -1    -1    -1    -1    -1
         1    -1    -1    -1    -1    -1    -1    -1    -1
         1    -1    -1    -1    -1    -1    -1    -1    -1
         1    -1    -1    -1    -1    -1    -1    -1    -1
         1    -1    -1    -1    -1    -1    -1    -1    -1
         1    -1    -1    -1    -1    -1    -1    -1    -1
         1    -1    -1    -1    -1    -1    -1    -1    -1
         1    -1    -1    -1    -1    -1    -1    -1    -1
         1    -1    -1    -1    -1    -1    -1    -1    -1
         1    -1    -1    -1    -1    -1    -1    -1    -1
         1    -1    -1    -1    -1    -1    -1    -1    -1

    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
    y = 1    -1    -1    -1    -1    -1    -1    -1    -1
         1    -1    -1    -1    -1    -1    -1    -1    -1
         1    -1    -1    -1    -1    -1    -1    -1    -1
         1    -1    -1    -1    -1    -1    -1    -1    -1
        -1     1    -1    -1    -1    -1    -1    -1    -1
        -1     1    -1    -1    -1    -1    -1    -1    -1
        -1     1    -1    -1    -1    -1    -1    -1    -1
        -1     1    -1    -1    -1    -1    -1    -1    -1
        -1     1    -1    -1    -1    -1    -1    -1    -1
        -1    -1     1    -1    -1    -1    -1    -1    -1
        -1    -1     1    -1    -1    -1    -1    -1    -1
        -1    -1     1    -1    -1    -1    -1    -1    -1
        -1    -1     1    -1    -1    -1    -1    -1    -1
        -1    -1     1    -1    -1    -1    -1    -1    -1
        -1    -1     1    -1    -1    -1    -1    -1    -1
        -1    -1     1    -1    -1    -1    -1    -1    -1
        -1    -1    -1    -1     1    -1    -1    -1    -1
        -1    -1    -1    -1     1    -1    -1    -1    -1
        -1    -1    -1    -1     1    -1    -1    -1    -1
        -1    -1    -1    -1     1    -1    -1    -1    -1
        -1    -1    -1    -1     1    -1    -1    -1    -1
        -1    -1    -1    -1     1    -1    -1    -1    -1
        -1    -1    -1    -1     1    -1    -1    -1    -1
        -1    -1    -1    -1     1    -1    -1    -1    -1
        -1    -1    -1    -1     1    -1    -1    -1    -1
        -1    -1    -1    -1     1    -1    -1    -1    -1
        -1    -1    -1    -1     1    -1    -1    -1    -1
        -1    -1    -1    -1     1    -1    -1    -1    -1
        -1    -1    -1    -1     1    -1    -1    -1    -1
        -1    -1    -1    -1     1    -1    -1    -1    -1
    donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    tPos =    4     0     0     0     0     0     0     0     0
     
     
    tNeg =    0    25    23    30    16    30    30    30    30
     
     
    fPos =   26     0     0     0     0     0     0     0     0
     
     
    fNeg =    0     5     7     0    14     0     0     0     0
     
    lss = 0.0559
    Je ne comprend vraiment comment il calcule.
    Merci de m'aider

  2. #2
    Membre extrêmement actif
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Points : 858
    Points
    858
    Par défaut
    Salut!

    Voila un example simple et ce que je comprends:

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    >> x=[1 1 1 1 -1 -1 -1 -1] %j'ai definis mon premier vecteur
     
    x =
     
         1     1     1     1    -1    -1    -1    -1
     
    >> y=[1 -1 1 -1 1 -1 1 -1] %j'ai definis mon deuxieme vecteur
     
    y =
     
         1    -1     1    -1     1    -1     1    -1
     
    >> tPos=sum(y==1 & x==1)
      tNeg=sum(y==-1 & x==-1)
      fPos=sum(y==-1 & x==1)
      fNeg=sum(y==1 & x==-1)
     
      lss=tPos/(tPos+fNeg)
     
    tPos =
     
         2
     
     
    tNeg =
     
         2
     
     
    fPos =
     
         2
     
     
    fNeg =
     
         2
     
     
    lss =
     
        0.5000
     
    >>
    tpos=2 parce qu'il compare la premiere valeur du x et la premiere valeur du y(si la valeur des deux est=1 il compte 1, autrement il ne compte rien ;

    apres il compare la deuxieme valeur du vecteur x s'il est 1 avec la deuxieme valeur du y s'il est 1 si les valeurs ne sont pas 1il ne compte rien et il passe a la troisieme valeur de ces trois vecteurs)-dans l'example la valeur 1 et 3 des deux vecteurs x et y sont =1 donc tPos=2. Et ainsi du suite pour parcourir tous les elements des 2 vecteurs.


    les autres variables ont la meme idee.

    Et lss il aplique seulement la formule donne.

    lss=tPos/(tPos+fNeg)

    Amicalment,

    Michel

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 70
    Points : 34
    Points
    34
    Par défaut Salut
    Merci, de t'être penché sur mon problème.
    Yon exemple et juste et je comprend le calcul de lss dans ton cas.
    Le problème c'est que pour ton exemple tPos, fNeg ne sont pas des vecteur mais des chiffres.
    Comment ça marche quand il s'agit d'un vecteur je ne comprend pas comment il fait la division....

  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 830
    Points
    14 830
    Par défaut
    Pour comprendre il faut trouver la doc du slash /.
    Tu peux la trouver en tapant :
    If B is an m-by-n matrix
    with m ~= n and A is a column vector
    with m components, or a matrix with several such columns,
    then X = B/A is the solution in the least squares sense
    to the under- or overdetermined system of equations XA = B.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 70
    Points : 34
    Points
    34
    Par défaut Salut
    Je l'ai regardé la doc mais ça ne m'a pas aidé.
    Dans la doc il parle d'une matrice et d'un vecteur et pas de 2 vecteurs.

  6. #6
    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 830
    Points
    14 830
    Par défaut
    Un vecteur ne serait-il pas tout simplement une matrice (plutôt un tableau d'ailleurs voir : Gestion des matrices ) de dimension 1*n ou n*1 ?

  7. #7
    Membre du Club Avatar de IFREMER
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 61
    Points : 46
    Points
    46
    Par défaut
    C'est tiré de la doc, j'espère que ça t'aidera :

    Suppose that A and b are the following.
    A = magic(3)
    A =
    8 1 6
    3 5 7
    4 9 2
    b = [1;2;3]
    b =
    1
    2
    3

    To solve the matrix equation Ax = b, enter
    x=A\b
    x =
    0.0500
    0.3000
    0.0500
    Bonne journée

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 70
    Points : 34
    Points
    34
    Par défaut salut
    je comprend ça mais ça ne n'aide pas pour comprendre quand tu as 2 vecteurs....

  9. #9
    Membre extrêmement actif
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Points : 858
    Points
    858
    Par défaut
    Ce que tu as x et y ne sont pas des vecteurs mais des arrays. Il y a une difference entre les vecteurs et arrays.

    Pour voir le type des variables x et y definis par toi il suffit de tapper en command window:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    >>whos x
    >>whos y
    Name Size Bytes Class

    x 1x1 8 double array



    Caroline avait donne des fonctions que tu peux utiliser sur les arrays je te donne un exemple pour que tu comprends que signifie un array:

    Example1: Calculer la somme pour un array

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    >> magic(3) %creation d'un array magique le somme sont egales sur les lignes,colonnes et les deux diagonales
     
    ans =
     
         8     1     6
         3     5     7
         4     9     2
     
    >> sum(magic(3))
     
    ans =
     
        15    15    15
    Ca te fait la somme sur les lignes.

    Donc quelque chose de cela tu dois essaye de comprendre ce que tu as. On t'as donne des examples.

    Un vecteur en matlab:


    Donc tu dois comprendre la difference qui existe entre les vecteurs et les arrrays.


    Comme tu vois dans l'example avec sum et magic la somme se comporte differement dans un array que dans un vecteur(je te donne un deuxieme example):



    Example2: La somme pour un vecteur c'est simplement ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    >>v=[1 4 6]
    >>t=sum(v)

    Revenant a ton example quand tu lis x il te fait la somme sur les 16lignes que tu as c'est pour ca qu'il affiche :

    ans=-7 de 16 fois

    tpos=4 parce qu' il compare les valeurs sur la colonne 1 tu as quatre de 1 pour x=1 et y=1 sur la colonne 1 des array x et y et le reste c'est 0.

    Et ainsi du suite. (tu dois regarder la condition pour tpos seulement pour chaque colonne des array x et y c'est ca). Je t'ai donne un example au-dessus mon premier post.

    J'espere que maintenant c'est clair!

    Amicalment,

    Michel

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 70
    Points : 34
    Points
    34
    Par défaut salut
    Ok, ce ne sont pas des array ce sont des vecteurs. Petite démonstration avec les vecteurs x et y suivants :

    >> x = [3 2]

    x =
    3 2

    >> y = [4 3]

    y =
    4 3

    >> x/y

    ans =
    0.7200

    Comment expliquer vous le 0.72 moi je n'y arrive absolument pas.
    Merci

  11. #11
    Membre extrêmement actif
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Points : 858
    Points
    858
    Par défaut
    /- c'est l'operateur forni pour diviser a droite un vecteur ou array depend ce que tu as (dans ton cas c'est vecteur)



    Pour obtenir aide a tous les operateurs du matlab:

    Extrait de la documentation:

    " mrdivide - Slash or right matrix divide / "

    Donc:

    Tu as des exemples la.

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 70
    Points : 34
    Points
    34
    Par défaut salut
    Merci, pour les info mais je ne me serai pas permise de vous demander de l'aide sans avois été cherché dans l'aide avant.
    J'y suis depuis hier dans l'aide et je ne comprends toujours pas si toi tu l'as comprend peux-tu m'expliquer.
    Merci

  13. #13
    Membre extrêmement actif
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Points : 858
    Points
    858
    Par défaut
    >>x/y %c'est droit division


    equivalent avec:

    mrdivide

    equivalent avec

    >>x*pinv(y)

    Regarde la documentation de la fonction pinv.

    Example a ce que tu veux faire avec pinv:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    >> x = [3 2]
     
    >> y = [4 3]
     
    >> x*pinv(y)

    Ou si tu veux un lien:

    http://en.wikipedia.org/wiki/Linear_least_squares

    Tu obtiens ton resultat ou y' est le transpose de ton vecteur.

    Donc la division a droite est definie comme ca:

    x/y = x*y'/(y*y')=0.72

    Donc une deuxieme methode d'obtenir ton resultat 0.72 aux vecteurs x et y:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    >> x= [ 3 2]
    y= [4 3]
    x*y'/(y*y')
    J'espere maintenant que ca est utile pour toi ! Tu as 2 methodes maintenant a tester!

    La division a droite suppose d'applier cette formule mathematique.

    Amicalment,

    Michel

    P.S Si tes choses sont maintenant clairs clique le boutton resolu en bas de mon message s'il te plait.

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

Discussions similaires

  1. Un nouveau qui a besoin d'aide sur MATLAB
    Par bf491499 dans le forum MATLAB
    Réponses: 4
    Dernier message: 26/02/2007, 16h10
  2. Filemaker ... besoin d'aide sur les Plugin
    Par joange dans le forum Autres SGBD
    Réponses: 3
    Dernier message: 22/04/2004, 10h16
  3. [intermedia] besoin d'aide sur script PL/SQL
    Par SteelBox dans le forum PL/SQL
    Réponses: 8
    Dernier message: 05/01/2004, 19h59
  4. [CR] besoin d'aide sur les formules
    Par GuillaumeDSA dans le forum Formules
    Réponses: 4
    Dernier message: 10/07/2003, 12h19

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