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

Unix Discussion :

Calcul de matrices en bash


Sujet :

Unix

  1. #1
    Candidat au Club
    Homme Profil pro
    développeur
    Inscrit en
    Juin 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Israël

    Informations professionnelles :
    Activité : développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2017
    Messages : 13
    Points : 4
    Points
    4
    Par défaut Calcul de matrices en bash
    Bonjour,

    Je cherche depuis un bon moment comment pouvoir faire différents calculs avec des matrices en bash.

    Je donne un exemple:

    Matrice 1
    1 2 3 4
    5 6 7 8
    9 9 9 9

    Matrice 2
    1 1 1 1
    1 1 1 1
    1 1 1 1

    J'aimerai pouvoir faire les différents calculs (addition, soustraction, multiplication) des 2 matrices en bash seulement on a encore jamais vu en cours comment faire et on nous a dit que ca tomberait a l'examen qui arrive bientôt. J'ai donc besoin de votre aide svp.

    Je vous remercie

  2. #2
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 311
    Points : 12 820
    Points
    12 820
    Par défaut
    Bonjour,

    Hmm, intéressant...

    Faisons déjà ça pas à pas:
    Peux-tu fournir les algorithmes de calcul des matrices (addition, soustraction, multiplication) ?

  3. #3
    Candidat au Club
    Homme Profil pro
    développeur
    Inscrit en
    Juin 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Israël

    Informations professionnelles :
    Activité : développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2017
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    c'est à dire fournir les algorithmes? un morceau de code?

  4. #4
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 311
    Points : 12 820
    Points
    12 820
    Par défaut
    Non, du pseudo-code ou une description détaillée de comment on fait le calcul matriciel pour chaque opérateur.

  5. #5
    Candidat au Club
    Homme Profil pro
    développeur
    Inscrit en
    Juin 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Israël

    Informations professionnelles :
    Activité : développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2017
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Justement j'ai essayé j'ai regardé un petit peu sur internet ce que je trouvais et j'ai trouvé ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    while true; do
         read -r c1 c2 c3 c4 <&3
         read -r d1 d2 d3 d4 <&4
         if [-z "$c1" -o -z "$d1"]; then
               break;
         fi
    echo "$(($c1 + $d1)) $(($c2 + $d2)) $(($c3 + $d3)) $(($c4 + $d4))" > 3.txt
    done 3<1.txt 4<2.txt
    1.txt est la matrice 1
    2.txt est la matrice 2
    3.txt est le résultat
    mais 4.txt je ne sais pas a quoi il correspond et quand je l'essaye sur mon terminal ca ne marche pas (idem pour &3 et &4)

  6. #6
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 311
    Points : 12 820
    Points
    12 820
    Par défaut
    Je ne vois pas où tu vois un 4.txt dans le code que tu fournis...

    Je vois juste une addition de 2 matrices de 4 colonnes et de n lignes.

    Les &3 et &4 ne sont pas des fichiers mais des descripteurs de fichiers qui pointent respectivement sur 1.txt et 2.txt.

    S'il utilisaient directement 1.txt et 2.txt sur les lignes read, on ouvrirait à chaque fois les fichiers pour lire la première ligne.

  7. #7
    Candidat au Club
    Homme Profil pro
    développeur
    Inscrit en
    Juin 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Israël

    Informations professionnelles :
    Activité : développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2017
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    je l'ai copié tel que je l'ai trouvé sur internet. Et nous n'avons pas appris ces styles de pointeurs. J'ai juste besoin des lignes de code simples qui permet de faire ces calculs.

  8. #8
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 038
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 038
    Points : 8 405
    Points
    8 405
    Par défaut
    salut,

    Citation Envoyé par jordan5526 Voir le message
    J'ai juste besoin des lignes de code


    Citation Envoyé par jordan5526 Voir le message
    Matrice 1
    1 2 3 4
    5 6 7 8
    9 9 9 9

    Matrice 2
    1 1 1 1
    1 1 1 1
    1 1 1 1

    J'aimerai pouvoir faire les différents calculs (addition, soustraction, multiplication) des 2 matrices en bash
    • comment tu calcules matrice1 + matrice2 ?
    • comment tu calcules matrice1 - matrice2 ?
    • comment tu calcules matrice1 * matrice2 ?

    au minimum pour chaque opération donne nous la matrice résultat correspondante

  9. #9
    Candidat au Club
    Homme Profil pro
    développeur
    Inscrit en
    Juin 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Israël

    Informations professionnelles :
    Activité : développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2017
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    matrice 1 + matrice 2
    2 3 4 5
    6 7 8 9
    10 10 10 10

    matrice 1 - matrice 2
    0 1 2 3
    4 5 6 7
    8 8 8 8

    matrice 1 * matrice 2
    1 2 3 4
    5 6 7 8
    9 9 9 9

    Voila les matrices résultats

  10. #10
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 311
    Points : 12 820
    Points
    12 820
    Par défaut
    Citation Envoyé par jordan5526 Voir le message
    je l'ai copié tel que je l'ai trouvé sur internet. Et nous n'avons pas appris ces styles de pointeurs. J'ai juste besoin des lignes de code simples qui permet de faire ces calculs.
    C'est un peu une aberration, ce que tu dis là, je ne vois pas en quoi ton prof peut te reprocher d'utiliser des concepts propre à un langage pour faire les choses correctement...

    De plus, il est difficile de faire le travail à ta place car déjà, ce n'est pas le principe du site et en plus avec des restrictions que l'on ne connait pas.

    Si tu veux une autre approche:
    -mettre le fichier 1 dans un tableau
    -mettre le fichier 2 dans un tableau
    -traiter des tableaux au lieu de fichiers.

  11. #11
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 311
    Points : 12 820
    Points
    12 820
    Par défaut
    Citation Envoyé par jordan5526 Voir le message
    matrice 1 * matrice 2
    1 2 3 4
    5 6 7 8
    9 9 9 9
    Alors pour le résultat du produit des 2 matrice que tu présentes, je veux bien le détails de l'algo (surtout pour la dernière colonne) ?

  12. #12
    Candidat au Club
    Homme Profil pro
    développeur
    Inscrit en
    Juin 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Israël

    Informations professionnelles :
    Activité : développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2017
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    j'ai vraiment besoin de savoir comment je pourrai tomber sur ces matrices la. Je sais que ce n'est pas le but du site de donner les réponses mais la c'est une question assez urgente car mon examen est mercredi et je suis quasi sur qu'on va devoir faire des additions de matrices ou soustraction en bash.

  13. #13
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 311
    Points : 12 820
    Points
    12 820
    Par défaut
    Comme déjà dit, on ne sait pas ce que tu connais du shell (bash) et les limites de ce que l'on peut utiliser.

  14. #14
    Candidat au Club
    Homme Profil pro
    développeur
    Inscrit en
    Juin 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Israël

    Informations professionnelles :
    Activité : développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2017
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    je n'ai pas de limites, la seule limite est qu'il faut que ca soit écrit en bash et non en awk c'est la seule limite. Maintenant les pointeurs que j'avais noté tout a l'heure je ne sais pas vraiment les utiliser j'ai essayé sur mon terminal et ca n'a pas marché

  15. #15
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 038
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 038
    Points : 8 405
    Points
    8 405
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Alors pour le résultat du produit des 2 matrice que tu présentes, je veux bien le détails de l'algo (surtout pour la dernière colonne) ?
    c'est ni plus ni moins l'application de l'opérateur membre à membre entre les deux matrices en fait si j'ai bien compris

    Citation Envoyé par jordan5526 Voir le message
    Je sais que ce n'est pas le but du site de donner les réponses mais la c'est une question assez urgente car mon examen est mercredi et je suis quasi sur qu'on va devoir faire des additions de matrices ou soustraction en bash.
    alors pour être tout à fait honnête perso je m'en fous complètement, d'autres diraient "fallait t'y prendre avant et réviser", par contre j'ai aucun problème à te pondre un code tout fait du moment que ça me prend pas trop de temps, j'aime bien touiller bash et c'est un peu comme ma séance d'abdos quotidienne coté scripting, chacun est responsable du développement (ou non) de ses compétences, la différence se jouera à l'embauche ensuite

    voilà donc exactement ce que t'as commandé, un code qui marche, j'espère qu'il te plaira autant qu'à moi :
    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
    #!/bin/bash
     
    operate() {
       sign=$1
       for ((y=0; y<3; y++)); do
          for ((x=0; x<4; x++)); do
             echo -ne "$((matrice1[$x,$y] $sign matrice2[$x,$y])) "
          done
          echo
       done
       echo
    }
     
    addition() {
       operate "+"
    }
     
    soustraction() {
       operate "-"
    }
     
    multiplication() {
       operate "*"
    }
     
    declare -A matrice1
    matrice1[0,0]=1; matrice1[1,0]=2; matrice1[2,0]=3; matrice1[3,0]=4
    matrice1[0,1]=5; matrice1[1,1]=6; matrice1[2,1]=7; matrice1[3,1]=8
    matrice1[0,2]=9; matrice1[1,2]=9; matrice1[2,2]=9; matrice1[3,2]=9
     
    declare -A matrice2
    matrice2[0,0]=1; matrice2[1,0]=1; matrice2[2,0]=1; matrice2[3,0]=1
    matrice2[0,1]=1; matrice2[1,1]=1; matrice2[2,1]=1; matrice2[3,1]=1
    matrice2[0,2]=1; matrice2[1,2]=1; matrice2[2,2]=1; matrice2[3,2]=1
     
    addition
    soustraction
    multiplication
    en revanche mon SAV sur ce genre de script est à la hauteur de l'implication de l'intéressé

  16. #16
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 271
    Points : 13 536
    Points
    13 536
    Par défaut
    Bonjour

    Citation Envoyé par jordan5526 Voir le message
    matrice 1 * matrice 2
    1 2 3 4
    5 6 7 8
    9 9 9 9

    Voila les matrices résultats
    Je bondis au plafond.
    Ce n'est pas du tout la version classique de la multiplication de matrices.
    Google est ton ami pour trouver la vraie formule.

  17. #17
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 311
    Points : 12 820
    Points
    12 820
    Par défaut
    C'est surtout que le nombre de ligne de la matrice 2 n'est pas égale au nombre de colonne de la matrice 1 ou alors on considère que l'on a déjà transposé la matrice 2...

Discussions similaires

  1. algorithme qui calcul la matrice de coocurence
    Par takfa2008 dans le forum Traitement d'images
    Réponses: 3
    Dernier message: 13/11/2008, 09h41
  2. Calcul de matrice jacobienne
    Par malikakika dans le forum C++Builder
    Réponses: 1
    Dernier message: 04/05/2008, 02h17
  3. Calculer une matrice avec la méthode de EULER
    Par lematlabeur dans le forum MATLAB
    Réponses: 7
    Dernier message: 05/11/2007, 18h22
  4. Moteur 2D: Pb de calcul de Matrice de transformation
    Par themadmax dans le forum Algorithmes et structures de données
    Réponses: 14
    Dernier message: 29/06/2006, 11h22
  5. calcul de matrice
    Par harsh dans le forum OpenGL
    Réponses: 1
    Dernier message: 08/03/2005, 11h07

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