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

Traitement du signal Discussion :

Code Datamatrix et Reed Solomon


Sujet :

Traitement du signal

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Code Datamatrix et Reed Solomon
    Bonjour à tous,
    Tout d’abord je vous avoue que c’est mon premier message dans le forum. (Donc désolé si je me suis trompé de catégorie.)
    En faite je suis en train de travailler sur un projet : Le datamatrix. Le principe affiché un code sur un écran pour économiser du papier et faire du bien à la planète ^^.
    J’aurais 900 caractères alphanumérique à envoyer donc l’utilisation de code sur 96x96 pixels (mais j’en suis pas encore là)
    Dans un premier temps je travaille avec un code 10x10 pixels, pour déjà voir si mon lecteur le lit sur mon écran et OUI . Le problème maintenant c’est que je vais devoir connaitre la composition du code pour le refaire dans mon écran.
    Donc il y a deux points : les data et les check.
    Les data j’ai compris mais les check font appel au code reed solomon qui d’ailleurs au passage m’a mis une claque dans mon timing … J’utilise et comprend assez bien les polynômes sauf que là je ne comprends même pas le départ …
    Prenons un exemple déjà tout fait :
    Codage de 1 2 3 4 5 6
    Donc pour les data :
    12 + 130 = 142
    34 + 130 = 164
    56 + 130 = 186
    Jusque là tout va bien, mais après pour les check, c’est une autre histoire.

    En faite mon code à la fin doit donner : 142 164 186 114 25 5 88 102
    Avec 114 25 5 88 102 comme check
    Mais bon il me manque l’étape de calcul des check, et là, malgré avoir fait pas mal de site et essayer aussi bien des divisions euclidiennes de polynômes que de calcul logique je suis jamais arrivé au bon résultat…
    Donc si quelqu’un connait ce code et peu juste me montrer le passage entre les data de l’exemple et les check

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Titomdu69 Voir le message
    Mais bon il me manque l’étape de calcul des check, et là, malgré avoir fait pas mal de site et essayer aussi bien des divisions euclidiennes de polynômes que de calcul logique je suis jamais arrivé au bon résultat…
    Donc si quelqu’un connait ce code et peu juste me montrer le passage entre les data de l’exemple et les check
    Le mieux est encore de lire le document de référence "Reed-Solomon Error Correction" de C.K.P. Clarke. Il y a les explications ainsi qu'un exemple de calcul "à la main".

    En fait, il s'agit de trouver le polynome R(x) tel que

    M(x) = Q(x)*G(x) + R(x)

    G(x) : le polynome générateur, dans ton cas de degré 5 (car tu veux un code de taille 5)
    M(x) : le polynome représentant ton message, de degré 8 (message de taille 3 + code de taille 5)
    Q(x) : le quotient de la division
    R(x) : le reste de la division = le polynome représentant le code

    Attention ! Les calculs se font dans un corps de Galois !!!!
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci pour ces renseignements.

    Je regarde ça aujourd'hui, je vous tiens au courant

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Voila le tableau que j'obtiens pour coder 1 2 3 4 5 6
    12 + 130 =142
    34 + 130 =164
    56 + 130 =186





    Donc L1 correspond à mon polynomes (142x^2 + 164^x + 186)*x^5
    L2 correspond à 142x^2 *( G(x) )
    G(x) : Polynome générateur : x^5 + 62x^4 + 111x^3 + 15 x^2 + 48x + 228
    Enfin j'utilise bien le tableau GF(256)
    L3 : L1 XOR L2

    Et je répète la manip
    Par contre je devrais obtenir 114 25 5 88 102 et j'obtiens : 58 19 124 14 114

    Donc si quelqu'un voit une erreur n'hésitez pas ^^

  5. #5
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Titomdu69 Voir le message
    L2 correspond à 142x^2 *( G(x) )
    142.x^2 * G(x)
    = [142*1].x^7 + [142*62].x^6 + [142*111].x^5 + [142*15].x^4 + [142*48].x^3 + [142*228].x^2
    = 142.x^7 + 85.x^6 + 176.x^5 + 25.x^4 + 194.x^3 + 122.x^2

    Donc je pense qu'il y a un problème dans ton tableau GF(256).

    Code java : 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
    // primitive polynomial for DATAMATRIX : x^8+x^5+x^3+x^2+1
    int PP = 301; // = 100101101 (binary)
     
    // sequence of A^i in GF(256)
    int[] A = new int[256];
    A[0]=1;
    for (int i = 1; i < 256; i++) { 
    	A[i] = A[i-1] << 1; 
    	if (A[i]>255) A[i]^=PP; 
    }
     
    // Multiplication table : A^i * A^j = A^(i+j)
    int[][] mul = new int[256][256];
    for (int j = 0; j < 256; j++)
    	for (int i = 0; i < 256; i++)
    		mul[A[i]][A[j]] = A[(i+j) % 255];
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Slt

    Pour mon tableau de GF(256), j'ai pris ce site :

    http://wcours.gel.ulaval.ca/2010/h/G...Galois_256.pdf

    Citation Envoyé par pseudocode
    primitive polynomial for DATAMATRIX : x^8+x^5+x^3+x^2+1
    Eux, ils utilisent le polynome : x^8+x^4+x^3+x^2+1

    Donc c'est vrai que l'on trouve pas le même tableau ^^

    Je vais essayer avec le tien on verra bien ^^


    Edit : Voici un autre pdf qui donne le meme polynome primitif que moi :
    http://www.sweegy.ch/documents/repor...dietler%20.pdf
    (Page6)

  7. #7
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Titomdu69 Voir le message
    Eux, ils utilisent le polynome : x^8+x^4+x^3+x^2+1
    Polynome pour QR-CODE : x^8 + x^4 + x^3 + x^2 + 1 -> 285(decimal)
    Polynome pour DATAMATRIX : x^8 + x^5 + x^3 + x^2 + 1 -> 301(decimal)


    Je vais essayer avec le tien on verra bien ^^
    Code java : 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
    // Generator polynomial G(x) for 5 check characters
    int[] G = {1,62,111,15,48,228};
    int d = G.length-1; // degree of G(x)
     
    // Input data
    int[] input = {142, 164, 186};
     
    // INPUT(x) = Q(x)*G(x) + R(x)
    // compute R(x) using  long division
    int[] R = Arrays.copyOf(input, d+1); 
    for (int j=0; j<input.length; j++) {
    	int q = R[0]; // = R[0]/G[0] = R[0]/1 = R[0] in GF(256) 
    	for (int i=0; i<d; i++)
    		R[i] = R[i+1] ^ mul[q][G[i+1]];
    	if((j+d+1)<input.length) R[d]=input[j+d+1]; else R[d]=0;
    }
     
    R = Arrays.copyOf(R, d); // keep first d digits or R 
    System.out.println(Arrays.toString(R));

    [114, 25, 5, 88, 102]
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup pseudo code pour le temps que tu as passé à mon problème.
    Je pense avoir tout compris maintenant. J'essaye avec le nouveau polynôme ce soir !

    Mais normalement ça devrait le faire
    Merci !

    EDIT:

    Niquel ça fonctionne !

    C'est vrai que en utilisant le bon polynôme primitif ça va mieux

    Encore merci !

  9. #9
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Titomdu69 Voir le message
    Merci beaucoup pseudo code pour le temps que tu as passé à mon problème.
    Je pense avoir tout compris maintenant. J'essaye avec le nouveau polynôme ce soir !

    Mais normalement ça devrait le faire
    Merci !


    Pas de problème. Ca ne m'a couté que la peine d'écrire deux fois 5 lignes de code sous Eclipse.

    Je passe le sujet en résolu.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  10. #10
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Pouvez-vous m'expliquer la manière avec laquelle vous trouvez la ligne L2 ?
    Merci par avance.

    Citation Envoyé par Titomdu69 Voir le message
    Bonjour,

    Voila le tableau que j'obtiens pour coder 1 2 3 4 5 6
    12 + 130 =142
    34 + 130 =164
    56 + 130 =186





    Donc L1 correspond à mon polynomes (142x^2 + 164^x + 186)*x^5
    L2 correspond à 142x^2 *( G(x) )
    G(x) : Polynome générateur : x^5 + 62x^4 + 111x^3 + 15 x^2 + 48x + 228
    Enfin j'utilise bien le tableau GF(256)
    L3 : L1 XOR L2

    Et je répète la manip
    Par contre je devrais obtenir 114 25 5 88 102 et j'obtiens : 58 19 124 14 114

    Donc si quelqu'un voit une erreur n'hésitez pas ^^

  11. #11
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par jacosado Voir le message
    Pouvez-vous m'expliquer la manière avec laquelle vous trouvez la ligne L2 ?
    Merci par avance.
    Le tableau représente une division de polynome
    Polynome | Generateur
             |------------
             |
       reste | Quotient
             |
             |
    
    Pour le cas qui nous intéresse, c'est le polynome (142,164,186,0,0,0,0,0) qui doit être divisé par (1,62,111,15,48,228). Le premier résultat du quotient est donc 142.

    (142,164,186,0,0,0,0,0) | (1,62,111,15,48,228)
                            |----------------------
                     Reste  | 142
                            |  
                            |  
                            |  
                            |  
    
    Et donc on a:

    Reste = (142,164,186,0,0,0,0,0) - 142*(1,62,111,15,48,228)

    La ligne L2 représente l'opération 142*(1,62,111,15,48,228)
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  12. #12
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci pour la réponse très rapide.
    La multiplication 142*(1,62,111,15,48,228) se fait dans un corps de Galois c'est bien çà ?
    Peut-on démontrer à la main que 142 * 62 = 85 ?
    J'ai bien compris ce que fait votre algorithme, mais je ne me le figure pas en tête.
    Merci pour votre réactivité.
    Pour finir avez-vous un exécutable qui fourni le code Reed Salomon des datamatrix :
    On donne 142 164 186 et le programme nous retourne 114 25 5 88 102.
    Grand merci, votre maîtrise du sujet m’impressionne !

  13. #13
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par jacosado Voir le message
    Merci pour la réponse très rapide.
    La multiplication 142*(1,62,111,15,48,228) se fait dans un corps de Galois c'est bien çà ?
    Peut-on démontrer à la main que 142 * 62 = 85 ?
    Heu... oui, on peut le calculer à la main. Mais j'avoue que je ne me suis jamais amusé a le faire. Utiliser un ordinateur pour pré-calculer les tables de multiplication, c'est nettement plus simple.

    Enfin bon, si on repasse en écriture polynome, on cherche a calculer A(x)*B(x) modulo G(x), avec

    A(x) = x^7 + x^3 + x^2 + x^1         // 142 =  10001110
    B(x) = x^5 + x^4 + x^3 + x^2 + x^1   //  62 =  00111110
    G(x) = x^8 + x^5 + x^3 + x^2 + 1     // 301 = 100101101 (DATAMATRIX)
    
    Ce qui nous donne:
    A(x) * B(x) = x^12 + x^11 + x^10 + x^9 + 2x^8 + 2x^7 + 3x^6 + 3x^5 + 3x^4 + 2x^3 + x^2
                = x^12 + x^11 + x^10 + x^9 + x^6 + x^5 + x^4 + x^2
                = (x^4 + x^3 + x^2 - 1) * G(x)  +  (-2x^7 - x^6 - x^4 + x^2 + 1)
                = (x^4 + x^3 + x^2 + 1) * G(x)  +  (x^6 + x^4 + x^2 + 1)
    
    Si on réécrit la dernière ligne en notation binaire, on obtient:
    10001110 * 00111110 = 11101 * 100101101 + 1010101

    C'est à dire, en notation décimale:
    142 * 62 = 29 * 301 + 85

    D'où 142 * 62 = 85 (modulo 301) dans le corps de Galois

    Pour finir avez-vous un exécutable qui fourni le code Reed Salomon des datamatrix :
    On donne 142 164 186 et le programme nous retourne 114 25 5 88 102.
    Grand merci, votre maîtrise du sujet m’impressionne !
    Un executable, non. Mais le code Java donné au post #7 fait exactement cela.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Ma question va vous paraitre bête mais comment trouvez vous :
    (1,62,111,15,48,228).
    Merci beaucoup pour votre aide

  15. #15
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par philou6345 Voir le message
    Ma question va vous paraitre bête mais comment trouvez vous :
    (1,62,111,15,48,228).
    Merci beaucoup pour votre aide
    C'est loin d'être bête comme question.

    Les polynômes générateurs sont de la forme G(x) = (x-a^1)(x-a^2)(x-a^3)...
    où "a" est l'élément primitif du corps, et le degré de G est égal au nombre d'octets de correction désiré.

    5 octets de correction --> Deg(G)=5 --> G(x) = (x-a^1)(x-a^2)(x-a^3)(x-a^4)(x-a^5)

    --> G(x) = (x-2)(x-4)(x-8)(x-16)(x-32) = 1.x^5 + 62.x^4 + 111.x^3 + 15.x^2 + 48.x + 228

    Pour info, tout cela est expliqué dans la norme ISO/IEC 16022
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  16. #16
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup pour la réponse rapide et de qualité.

  17. #17
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par philou6345 Voir le message
    Merci beaucoup pour la réponse rapide et de qualité.
    C'est gentil.


    J'ajouterais qu'on trouve aussi des polynomes de la forme G(x) = (x-a^0)(x-a^1)(x-a^2)... notamment pour les QRCode.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  18. #18
    Candidat au Club
    Homme Profil pro
    Technicien
    Inscrit en
    Mai 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Technicien
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Demande d'explication sur : 85 (modulo 301) dans le corps de Galois
    Citation Envoyé par pseudocode Voir le message
    Ce qui nous donne:
    A(x) * B(x) = x^12 + x^11 + x^10 + x^9 + 2x^8 + 2x^7 + 3x^6 + 3x^5 + 3x^4 + 2x^3 + x^2
                = x^12 + x^11 + x^10 + x^9 + x^6 + x^5 + x^4 + x^2
                = (x^4 + x^3 + x^2 - 1) * G(x)  +  (-2x^7 - x^6 - x^4 + x^2 + 1)
                = (x^4 + x^3 + x^2 + 1) * G(x)  +  (x^6 + x^4 + x^2 + 1)
    
    Si on réécrit la dernière ligne en notation binaire, on obtient:
    10001110 * 00111110 = 11101 * 100101101 + 1010101

    C'est à dire, en notation décimale:
    142 * 62 = 29 * 301 + 85

    D'où 142 * 62 = 85 (modulo 301) dans le corps de Galois
    Bonjour,

    Merci pour toutes ces explications qui m'enrichisse vraiment !
    J'ai bien suivie la démarche jusqu'à "= x^12 + x^11 + x^10 + x^9 + x^6 + x^5 + x^4 + x^2"
    Mais je ne comprends par comment arriver à ça "= (x^4 + x^3 + x^2 - 1) * G(x) + (-2x^7 - x^6 - x^4 + x^2 + 1)"
    Comment faire la fonction modulo dans le corps de Galois quoi ?!..

    Merci pour ta réponse

  19. #19
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par PierreEmileB Voir le message
    J'ai bien suivie la démarche jusqu'à "= x^12 + x^11 + x^10 + x^9 + x^6 + x^5 + x^4 + x^2"
    Mais je ne comprends par comment arriver à ça "= (x^4 + x^3 + x^2 - 1) * G(x) + (-2x^7 - x^6 - x^4 + x^2 + 1)"
    Le "modulo" c'est le "reste dans la division".

    Pour calculer le modulo, il faut donc faire une division du polynome M(x)=X^12+x^11+... par le polynome G(x)=x^8+x^5 +.... et garder seulement le reste.
    C'est à dire écrire M(x) sous la forme: M(x) = Q(x)*G(x) + R(x)

    C'est ce que j'ai fait directement sans détailler les calculs car c'est long et qu'il y a des calculateurs qui font ca très bien tout seul.

    Citation Envoyé par PierreEmileB Voir le message
    Comment faire la fonction modulo dans le corps de Galois quoi ?!..
    Comme je l'ai dit des les posts précédents, on s'amuse rarement a diviser les polynomes sous la forme "x^12 + x^11 + ...".

    - On traduit les polynomes en notation binaire ( x^3+x+1 = 1*x^3 + 0*x^2 + 1*x + 1 --> 1011)
    - On pré-calcule la table de multiplication (cf post #5).
    - on fait une "longue division" classique en utilisant la table de multiplication (cf post #7)
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  20. #20
    Candidat au Club
    Homme Profil pro
    Technicien
    Inscrit en
    Mai 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Technicien
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci Pseudocode,

    J'ai trouvé hier la résolution binaire de divisions polynomiales.
    Il faut donc prendre le reste de la division, c'est vrai que c'est simple une fois qu'on a compris

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Reed Solomon : QR Code
    Par Vuyxom dans le forum MATLAB
    Réponses: 0
    Dernier message: 14/01/2013, 20h17
  2. Aide codage gestion d'erreur Qr Code reed solomon
    Par bglacial dans le forum Général Java
    Réponses: 0
    Dernier message: 04/01/2012, 16h06
  3. Décodeur Reed Solomon (15,9)
    Par psychoP@T dans le forum VHDL
    Réponses: 2
    Dernier message: 06/05/2009, 21h41
  4. extraire un code DATAMATRIX d'une image
    Par s.abdou dans le forum Traitement d'images
    Réponses: 12
    Dernier message: 19/11/2008, 14h32
  5. decomposition des codes de Reed Solomon
    Par gronaze dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 30/05/2006, 15h53

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