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 :

insertion de ; dans une suite de bits


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations forums :
    Inscription : Août 2012
    Messages : 16
    Points : 5
    Points
    5
    Par défaut insertion de ; dans une suite de bits
    bonsoir à toute la famille. je souhaite insérer des ; après chaque 8 bits d'une suite afin de transformer celle-ci en matrice.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    z=10100010011001010001001001000100001101010101001100110101
    insertion des ; après chaque bit pour obtenir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    w=10100010;01100101;00010010;01000100;00110101;01010011;00110101
    svp c'est dans le but de transformer cette suite de bits en:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    x=
    10100010
    01100101
    00010010
    01000100
    00110101
    01010011
    00110101
    cordialement
    drimong

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Avec la fonction reshape :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    z = '10100010011001010001001001000100001101010101001100110101';
    reshape(z,8,[]).'

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations forums :
    Inscription : Août 2012
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    MERCI l'info mais avec reshape j’obtiens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    z = '10100010011001010001001001000100001101010101001100110101';
    reshape(z,8,[])
     
    ans =
     
    1000000
    0101010
    1100101
    0010111
    0000000
    0101101
    1010010
    0100111
    au lieu de
    10100010
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    01100101
    00010010
    01000100
    00110101
    01010011
    00110101
    comme je le souhaite.

    svp est-il possible de faire une boucle pour sélectionner chaque octet(8bits)

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Winjerome Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    z = '10100010011001010001001001000100001101010101001100110101';
    reshape(z,8,[]).'
    Citation Envoyé par drimong Voir le message
    svp est-il possible de faire une boucle pour sélectionner chaque octet(8bits)
    Pourrais-tu être plus précis ?
    À priori je ne vois pas pourquoi tu ne pourrais pas...

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations forums :
    Inscription : Août 2012
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    merci beaucoup Winjerome . ça marche parfaitement

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations forums :
    Inscription : Août 2012
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    svp existe t-il une fonction matlab pour faire des conversions de bits en ASCII
    exemple
    10100010
    01100101
    00010010
    01000100
    00110101
    01010011
    00110101
    ....
    ....
    ....

  7. #7
    FLB
    FLB est déconnecté
    Modérateur
    Avatar de FLB
    Homme Profil pro
    Ing. Aérospatiale
    Inscrit en
    Juin 2003
    Messages
    770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ing. Aérospatiale
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2003
    Messages : 770
    Points : 1 185
    Points
    1 185
    Par défaut
    Salut,
    tu vas avoir besoin de bin2dec pour transformer chaque groupe de 8 bits en une valeur décimale. Attention bin2dec demande un string en entrée, donc utilise num2str pour l'obtenir à partir d'une ligne de ta matrice.
    Ensuite la méthode char transforme la valeur numérique en caractère correspondant de la table ascii.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations forums :
    Inscription : Août 2012
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    merci beaucoup FLB ça marche parfaitement.

  9. #9
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Ce type de conversion peut également se faire à l'aide du calcul matriciel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    z = '10100010011001010001001001000100001101010101001100110101';
     
    z = reshape(z,8,[]);
    z = z-'0';
    z = 2.^(7:-1:0)*z;
    z = char(z);
    ou encore tout en une ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    z = '10100010011001010001001001000100001101010101001100110101';
     
    char(2.^(7:-1:0)*(reshape(z,8,[])-'0'))
    Pour le -'0', voir la FAQ : Comment transformer un signal sous forme de chaine de caractères en valeurs numériques ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations forums :
    Inscription : Août 2012
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    merci beaucoup mais j'ai encore une problème,quand je fait :
    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
    z = '10100010011001010001001001000100001101010101001100110101';
    p=reshape(z,8,[]).'
     
    p =
     
    10100010
    01100101
    00010010
    01000100
    00110101
    01010011
    00110101
     
    >> t=reshape(z,1,[])
     
    t =
     
    10100010011001010001001001000100001101010101001100110101
    u=reshape(t,8,[]).'
     
    u =
     
    10100010
    01100101
    00010010
    01000100
    00110101
    01010011
    00110101
     
    >> l=reshape(u,1,[])
     
    l =
     
    10000000101010110010100101110000000010110110100100100111
    voilà mon problème: je ne retrouve plus mon expression de départ a savoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    z = 10100010011001010001001001000100001101010101001100110101
    comment faire ?

  11. #11
    Invité
    Invité(e)
    Par défaut
    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
    >> z = '10100010011001010001001001000100001101010101001100110101';
    >> p = reshape(z,8,[]).'
    
    p =
    
    10100010
    01100101
    00010010
    01000100
    00110101
    01010011
    00110101
    
    >> reshape(p.', 1, [])
    
    ans =
    
    10100010011001010001001001000100001101010101001100110101
    Je te conseille la lecture de Toute matrice est vecteur ?

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations forums :
    Inscription : Août 2012
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    svp aidez moi, je n'arrive pas a faire la difference centre le caractere null (0) et espace. le probleme c'est que au lieu de retouner 0, j'obtient 32

  13. #13
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Il nous faudrait plus d'informations.

    Et montre nous le code que tu utilises.
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations forums :
    Inscription : Août 2012
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    voici le début de mon code=
    b =

    00000000
    00000000
    00000000
    11000000
    00001100
    00000000
    10000000
    00000101
    10000000
    00111000
    00000010
    00100000
    00010011
    00000000
    10110000
    00000110

    en effet, je convertis ce code en décimal, puis en ascii. une fois le code ascii obtenu, je copie le code et je colle dans une Edit de mon interface. le problème c'est que MATLAB confond le code ascii de '0' et celui de '32' (NUL et SPACE) comment résoudre ce problème

  15. #15
    Invité
    Invité(e)
    Par défaut
    C'est plutôt toi qui confonds le caractère '0' (valeur 48), le caractère espace ' ' (valeur 32) et le caractère NULL (en C par exemple '\0' servant à délimiter la fin d'une chaine de caractères) (valeur 0).
    Je te conseille de revoir ta table ASCII

    Si tu souhaites faire un remplacement des '0' par des espaces :

  16. #16
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations forums :
    Inscription : Août 2012
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    bien Winjerome Mais voici le véritable problème.
    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
    code=[0;0;0;192;12;0;128;5;128;56;2;32;19;0;176;6;64;56;1;240]
     
     
    ascii=char(code)
     
    ascii =
     
     
     
     
    À
    
     
    
    
    
    8
    
     
    
     
    °
    
    @
    8
    
    ð
    et la fonction inverse dans la toolbox marche bien. a savoir
    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
    double(ascii)
     
    ans =
     
         0
         0
         0
       192
        12
         0
       128
         5
       128
        56
         2
        32
        19
         0
       176
         6
        64
        56
         1
       240
    Mais quand je copie ce code et que je colle dans l'Edit de mon interface, je récupère la valeur et je convertis en décimale
    et à ma grande surprise j’obtiens
    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
    l =
        32
        32
        32
       192
        12
        32
        26
         5
        26
        56
         2
        32
        19
        32
       176
         6
        64
        56
         1
        240
    je ne comprends pas pourquoi mes '0' se transforme en '32'

    cordialement

  17. #17
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Citation Envoyé par drimong Voir le message
    Mais quand je copie ce code et que je colle dans l'Edit de mon interface, je récupère la valeur et je convertis en décimale
    Tu pourrais nous dire exactement ce que tu fais dans ces différentes étapes, avec quelles fonctions MATLAB ?

    Montre nous ton code.
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  18. #18
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations forums :
    Inscription : Août 2012
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    je réalise un interface afin de convertir des codes ascii entrés dans l'un de mes Edit en binaire.Et pour faire des test, je convertir une matrice d'entier en ascii avec la fonction CHAR.Une fois le code ascii obtenu, je le copie et je colle dans le EDIT de mon interface.le problème que je rencontre de celui du caractère NUL qui se confond avec ESPACE. ce qui me donne 32 au lieu de 0 en décimal.

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

Discussions similaires

  1. [9i] insertion sequentiel dans une table
    Par djalil dans le forum Oracle
    Réponses: 4
    Dernier message: 17/11/2005, 19h06
  2. [C#]Datagrid insertion signe € dans une colonne
    Par liliprog dans le forum ASP.NET
    Réponses: 12
    Dernier message: 16/11/2005, 14h59
  3. [JSP]probleme d'insertion float dans une table
    Par karamazov994 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 14/04/2005, 11h49
  4. Insertion valeure dans une table
    Par krfa1 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 29/03/2005, 10h50
  5. Réponses: 3
    Dernier message: 23/06/2004, 21h17

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