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 :

tri de valeur dans une operation


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 37
    Par défaut tri de valeur dans une operation
    Salut
    j'aimerais savoir s'il est possible dans matlab de faire un tri de valeur dans une operation:
    par exemple:
    y a t'il une fonction qui me permettrait de dire que :
    merci

  2. #2
    Expert confirmé
    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
    Par défaut
    Tu pourrais préciser ?
    Que sont x,y, et z ?

    Qu'appelles-tu un "tri de valeur dans une opération" ?

  3. #3
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 37
    Par défaut
    x y et z sont juste des valeur aleatoires qui me seviront a faire une comparaison tel que suit:
    est un resultat de plusieurs operations.
    la valeur binaire est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    a^3=0 1 1, a^5= 1 1 1, a^2=1 0 0
    ayant defini a comme un symoble: "" il n'est pas possible d'affecter a a^3 la valeur 0 1 1 alors j'aimerais savoir si existe une fonction qui me permetrait de faire juste un tri dans l'operation contenant l'addition et affecter ses valeur a x,y et z de tel sortes que je puisse faire une comparaison et effecter mes valeur binaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    strcmp(x, 'a^3')
    x1=0 1 1
    strcmp(x, 'a^5')
    x2=1 1 1
    strcmp(x, 'a^2')
    x3=1 0 0
     
    c1=x1+x2+x3           (c1= 0 1 1+1 1 1+1 0 0)
    voila en fait ou je veux en venir
    NB:je ne peux remplacer sa valeur que apres avoir obtenu le resultat de

  4. #4
    Membre éprouvé
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Par défaut
    Salut!

    Ton expression:

    x , y et z sont des variables aleatoires:
    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
     
    >> x=rand(a,3);y=rand(a,3);z=rand(a,3)
     
    z =
     
        0.4565    0.0185    0.8214
     
    >> x
     
    x =
     
        0.9501    0.2311    0.6068
     
    >> y
     
    y =
     
        0.4860    0.8913    0.7621
     
    >>
    Salut
    j'aimerais savoir s'il est possible dans matlab de faire un tri de valeur dans une operation:
    par exemple:
    C=a^3+a^5+a^2
    y a t'il une fonction qui me permettrait de dire que :
    x=a^3
    y=a^5
    z=a^2
    Tu peux utiliser la fonction strread:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [x1,x2,x3] = strread(C,'%s%s%s','delimiter','+')

  5. #5
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 37
    Par défaut
    salut, j'ai encore un problem pour convertir mon resultat en string:pour que mon programm execute la commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [x1,x2,x3] = strread(C,'%s%s%s','delimiter','+')
    Or je ne sais vraiment pas comment je pourrais ajouter les apostrophes
    pour que C soit un string:

    j'obtiens cette erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ??? Error using ==> dataread
    Second input must be a filename or string to parse.
     
    Error in ==> strread at 51
        [varargout{1:nlhs}]=dataread('string',varargin{:});
    merci d'avance

  6. #6
    Expert confirmé
    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
    Par défaut
    Le type (class) de C est sym donc cela pose problème.
    Il faudrait pouvoir le convertir en char, j'avoue que n'ayant pas la Symbolic Toolbox, je ne suis pas sure de savoir faire.
    Peut-être tout simplement :
    A tenter.

    Sinon la fonction SYMVAR ne pourrait-elle pas convenir ? (je pense que non car j'ai peur qu'elle renvoie a mais à regarder quand même)

  7. #7
    Membre éprouvé
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Par défaut
    Salut! Ou est la probleme?


    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
    >> C='a^3+a^5+a^2'
     
    C =
     
    a^3+a^5+a^2
     
    >> whos C
      Name      Size                    Bytes  Class
     
      C         1x11                       22  char array
     
    Grand total is 11 elements using 22 bytes
     
    >> S=char(C)
     
    S =
     
    a^3+a^5+a^2
     
    >> whos S
      Name      Size                    Bytes  Class
     
      S         1x11                       22  char array
     
    Grand total is 11 elements using 22 bytes
     
    >>
    Dis moi quelle type de variable tu veux que C etre.

    Pour l'instant c'est un char array.

  8. #8
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 37
    Par défaut
    le problem est que mon resultat est et non

    alors je veux le transformer en string et je ne sais comment

    la fonction symvar renvoie justement rien que a, j'ai deja tenté avec celle la.


    merci

  9. #9
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 37
    Par défaut
    j'ai le resultat attendu avec ;

    merci pour votre aide
    cela me permet d'avancer d'un pouce dans mon programme

    vous êtes des

  10. #10
    Membre éprouvé
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Par défaut
    Salut! Comme j'ai dis dans mon premier message utilise char(C), mais j'ai trouve maintenant une autre fonction tres belle qui te permet faire la transformation d'une expression symbolique que tu peux evaluer avec sym dans une chaines de caracteres a l'aide de la fonction vectorize.

    Personnelment j'ai Symbolic Toolbox et j'ai cherche parmi toutes les fonctions de ce toolbox.

    La fonction vectorize de ce toolbox et celle qu'il te faut. Donc:

    Extrait de la documentation:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    VECTORIZE(S), when S is a string expression, inserts a '.' before
        any '^', '*' or '/' in S.  The result is a character string.
    Example:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    g = sym('t*cos(t)');  % evaluation expression symbolique avec sym
    t = 0:0.1:10; % interval 0-10 avec le pas 0.1
    y = eval(vectorize(char(g))); % transformation expression symbolique en chaines de caracteres
    plot(t,y) % tracer le graphique
    g-est maintenant chaines des caracteres.

    J'espere que ca resolu ton probleme aussi!

    Donc vectorize est utilise dans la conversion que tu cherches!

    Il est tres interessant de decouvrir des nouveaux fonctions et aider les autres!

    En esperant de t'avoir aide!

    Bonne chance,

    Michel

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

Discussions similaires

  1. Tri des valeurs dans un DBGrid
    Par soviet dans le forum C++Builder
    Réponses: 3
    Dernier message: 11/06/2015, 14h18
  2. Tri ordre décroissant par valeur dans une TreeMap
    Par tifsa dans le forum Général Java
    Réponses: 5
    Dernier message: 10/12/2014, 16h51
  3. Réponses: 3
    Dernier message: 28/01/2004, 14h55
  4. intervertir les valeurs dans une colonne d'une table
    Par hammou dans le forum Débuter
    Réponses: 2
    Dernier message: 26/01/2004, 10h15
  5. [LG]Tri par insertion dans une liste chainée
    Par mister_dsg dans le forum Langage
    Réponses: 4
    Dernier message: 18/12/2003, 22h34

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