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

Algorithmes et structures de données Discussion :

Extraction de sous-matrices


Sujet :

Algorithmes et structures de données

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2012
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 10
    Par défaut Extraction de sous-matrices
    salut;
    s'il vous plait je cherche un algorithme pour l'extraction de sous matrice en utilisant le boucle for.
    exemple:
    soit une matrice mat= 1 2 3 4
    5 6 7 8
    9 10 11 12
    13 14 15 16


    je veux extraire par exemple
    s_mat= 6 7
    10 11

    merci d'avance à bientôt

  2. #2
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 819
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 819
    Par défaut
    salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // extraction sous-matrice m_ext de matrice m
    // premier élément ligne c, colonne d
    // dimensions m_ext: hauteur a, largeur b
    pour i de 0 à a-1
        pour j de 0 à b-1
            m_ext[i,j]=m[i+c,j+d]
        suivant
    suivant
    c'était compliqué...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  3. #3
    Membre Expert
    Avatar de Franck Dernoncourt
    Homme Profil pro
    PhD student in AI @ MIT
    Inscrit en
    Avril 2010
    Messages
    894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PhD student in AI @ MIT
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 894
    Par défaut
    Citation Envoyé par plegat Voir le message
    c'était compliqué...
    Une nuit entière de réflexion comme je peux le voir aux horaires des posts

  4. #4
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 819
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 819
    Par défaut
    Citation Envoyé par Franck Dernoncourt Voir le message
    Une nuit entière de réflexion comme je peux le voir aux horaires des posts
    J'ai été retardé chez ma coiffeuse, c'est elle qui m'a donné le déclic!
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  5. #5
    Membre habitué
    Inscrit en
    Janvier 2012
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 10
    Par défaut
    Bonjour à tous


    en fait je suis en train d'écrire une fonction en utilisant le logiciel matlab qui aura par exemple en entrée la matrice A :

    A=
    1 2 3 4 2 1
    2 0 0 0 0 0
    3 0 0 0 0 0
    4 0 0 0 0 0
    5 0 0 0 0 0
    6 1 1 2 1 2
    7 2 3 4 5 6

    et en sortie elle me renvoie la matrice S:

    S =

    1 2 3 4 2 1
    6 1 1 2 1 2
    7 2 3 4 5 6

    j'ai fais ça pour commencer:

    Code matlab : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [var =1;
    for i = 1 : 7
     
     
        if A(i,2)>0
            p(var,: )=A(i,: )
          var=var+1
        end
        end
    ]

    cela marche très bien. le problème je voulais le même principe mais sans utiliser la fonction ( : ) qui est inclus dans p(var,: )=A(i,: ).
    quelqu'un aurait une idée s'il vous plait pour régler ça?

  6. #6
    Membre Expert
    Avatar de Franck Dernoncourt
    Homme Profil pro
    PhD student in AI @ MIT
    Inscrit en
    Avril 2010
    Messages
    894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PhD student in AI @ MIT
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 894
    Par défaut
    Code matlab : Sélectionner tout - Visualiser dans une fenêtre à part
    A(~all(A,2),:)=[]

  7. #7
    Membre habitué
    Inscrit en
    Janvier 2012
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 10
    Par défaut
    oui cela fonctionne très bien mais moi je voulais le programme en utilisant le boucle for sans utiliser les fonction prédéfinie de MATLAB

  8. #8
    Membre Expert
    Avatar de Franck Dernoncourt
    Homme Profil pro
    PhD student in AI @ MIT
    Inscrit en
    Avril 2010
    Messages
    894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PhD student in AI @ MIT
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 894
    Par défaut
    for est une fonction prédéfinie de MATLAB....

  9. #9
    Membre habitué
    Inscrit en
    Janvier 2012
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 10
    Par défaut
    oui bien sur mais c'est à dire la programmation sera prise en main comme on fait en langage c . mon problème exactement de changer la fonction ( : ) que j'ai utilisé dans le code précédent par une autre instruction

  10. #10
    Membre Expert
    Avatar de Franck Dernoncourt
    Homme Profil pro
    PhD student in AI @ MIT
    Inscrit en
    Avril 2010
    Messages
    894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PhD student in AI @ MIT
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 894
    Par défaut
    Pourquoi ne veux-tu pas utiliser ( : ) ? C'est juste une boucle implicite.

  11. #11
    Membre habitué
    Inscrit en
    Janvier 2012
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 10
    Par défaut
    justement je veux pas utiliser les boucles implicites parce que par la suite je vais changer la programmation par un autre langage très proche de langage C

  12. #12
    Membre Expert
    Avatar de Franck Dernoncourt
    Homme Profil pro
    PhD student in AI @ MIT
    Inscrit en
    Avril 2010
    Messages
    894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PhD student in AI @ MIT
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 894
    Par défaut
    Pourquoi ne pas coder directement dans le langage qui t'intéresse ?

  13. #13
    Membre habitué
    Inscrit en
    Janvier 2012
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 10
    Par défaut
    en fait je utilise matlab parce que c'est très facile pour la programmation en traitement image. mais comme j'ai vous dit prise en main. par la suite je vais utiliser un autre logiciel avec un langage très proche de C dans le but implémentation matérielle. au cours de la programmation j'ai pas pu résoudre le genre de boucle implicite par une autre instruction.

  14. #14
    Membre Expert
    Avatar de Franck Dernoncourt
    Homme Profil pro
    PhD student in AI @ MIT
    Inscrit en
    Avril 2010
    Messages
    894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PhD student in AI @ MIT
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 894
    Par défaut
    ok comme tu veux. Il suffit de parcourir chaque ligne et pour chaque ligne détecter la présence d'un 0... mais je ne compte pas m'amuser avec des boucles explicites dans MATLAB pour une tâche aussi basique, donc je laisse à quelqu'un d'autre la joie de t'aider dans ce problème.

  15. #15
    Membre habitué
    Inscrit en
    Janvier 2012
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 10
    Par défaut
    merci bien quand même pour votre intervention vous êtes très gentil à bientôt

  16. #16
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par ange84 Voir le message
    en fait je utilise matlab parce que c'est très facile pour la programmation en traitement image. mais comme j'ai vous dit prise en main. par la suite je vais utiliser un autre logiciel avec un langage très proche de C dans le but implémentation matérielle. au cours de la programmation j'ai pas pu résoudre le genre de boucle implicite par une autre instruction.
    c'est pas franchement plus difficile en C :


    Code C : 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
    int i, j, tot, var=0 ;
     
    for ( i = 0 ; i < NLignes ; i++ )
      {
         tot = 0 ;
         for ( j = 0 ; j < NCol ; j++ )
            if ( A[i][j] != 0 )
               tot = tot +1 ;
     
         if ( tot == NCol )
            {
                 for ( j = 0 ; j < NCol ; j++ )
                    B[var,j] = A[i][j] ;
     
                 var = var + 1 ;
            }
      }

  17. #17
    Membre habitué
    Inscrit en
    Janvier 2012
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 10
    Par défaut
    ouiiiiii ça marche très bien .......
    je tiens à vous remercier souviron34 pour le coup de pouce que vous m'avez donnée...... à bientôt

  18. #18
    Membre Expert
    Avatar de Franck Dernoncourt
    Homme Profil pro
    PhD student in AI @ MIT
    Inscrit en
    Avril 2010
    Messages
    894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PhD student in AI @ MIT
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 894
    Par défaut
    Au passage, il est possible de générer du code C et C++ à partir de MATLAB et Simulink : http://www.mathworks.fr/help/toolbox/eml/

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

Discussions similaires

  1. extraction d'une sous matrice d'une image (taille)
    Par Ryma_d3 dans le forum Images
    Réponses: 2
    Dernier message: 25/01/2012, 19h04
  2. Extraction d'une sous matrice à partir d'une matrice
    Par Christinita dans le forum MATLAB
    Réponses: 16
    Dernier message: 17/01/2009, 10h42
  3. Réponses: 7
    Dernier message: 06/09/2006, 15h10
  4. Sous matrice carrée d'une matrice carrée
    Par devils55 dans le forum C++
    Réponses: 2
    Dernier message: 13/11/2005, 19h07
  5. Extraction de sous-chaine dans une chaine
    Par ma2th dans le forum C
    Réponses: 7
    Dernier message: 07/05/2004, 12h42

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