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 :

extraire une sous matrice d'une matrice sous condition


Sujet :

MATLAB

  1. #21
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 185
    Points : 51
    Points
    51
    Par défaut
    Bon j'ai fait un autre clear et un replay miraculeux a donné que des 0 les 1 ont disparues donc les questions qui restent pour moi sont pourquoi 10x14 et nn 14x14
    qu'est ce que c'est disp(MM(I(k):I(k)+dy-1,V(k):V(k)+2*dx+1)) et nnz(resu)
    bon si vous pouvez m'expliquer l'apparition des 1 au début tant mieux si non puisqu'ils ont diparues c'est génial!
    Merci infiniment d'avance pour toute aide

  2. #22
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Bonjour,

    disp(MM(I(k):I(k)+dy-1,V(k):V(k)+2*dx+1))

    Affiche la matrice recherchée sur Command Window à partir de la matrice MM contenant les caractères.
    Je l'ai remplacé par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     disp(M(I(k):I(k)+dy-1,VC(k):VC(k)+dx-1));
    Même principe à partir de la matrice M en chiffres


    Donne le nombre d'éléments non nuls de la matrice resu.

    Nouveau programme corrigé :

    LE NOMBRE DE LIGNES RECHERCHE EST LIMITE A 5 DANS LA FONCTION "inters"

    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
    clear
    M =[0     1     0     0     0     0     0     0     1     0     0
        1     0     0     0     0     0     1     0     1     0     0
        0     1     0     0     0     0     1     0     1     0     0
        1     1     0     0     0     0     0     1     1     1     0
        0     0     1     0     1     1     1     0     1     0     0
        0     0     1     1     1     1     0     0     0     0     0
        1     1     0     0     1     0     0     0     0     0     0
        1     0     0     1     0     1     0     0     0     0     0
        1     1     0     1     0     1     0     0     0     0     0
        1     1     0     1     1     1     1     0     1     0     0];
     [IL,JC]=size(M);
    MM=num2str(M);% Conversion en caractères
    dx=3;dy=4;% Dimensions de la matrice de zéros recherchée dx : colonnes dy : lignes 
    for n=1:IL
        r=strfind(MM(n,:), num2str(zeros(dx,1)'));% Recherche des chaînes de caractères candidates
        T(n,1:length(r))=r;% Rang des colonnes avec chaîne recherchée
    end
    resu=inters(M,T,dx,dy);% Fonction de calcul des zones
    disp(['Il y a : '  num2str(nnz(resu)) ' zone(s) de zéros de cotés : ' num2str(dx) ' Col  x ' num2str(dy) ' Lig'])
    disp(' ');
    [I,J,V]=find(resu);% calcul des indices
     
    for k=1:length(I)
        VC(k)=V(k)-2*(V(k)-1)/3;
        disp(['Matrice : ' num2str(k) '    ('  num2str(I(k)) ':'  num2str(VC(k)) ')'...
           '    ('  num2str(I(k)+dy-1) ':'  num2str(VC(k)+dx-1) ')' ]);
         disp(M(I(k):I(k)+dy-1,VC(k):VC(k)+dx-1));
        disp(' ');
    end
    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
    function res=inters(M,T,dx,dy)
    res=zeros(size(T));
    switch dy
        case 1
            res=T;
        case 2
            for n=1:length(T)-dy
                v=intersect(T(n,:),T(n+1,:));
                res(n,1:length(v))=v;
            end
        case 3
     
            for n=1:length(T)-dy
                v=intersect(T(n,:),intersect(T(n+1,:),T(n+2,:)));
                res(n,1:length(v))=v;
            end
        case 4
            for n=1:length(T)-dy
                v=intersect(T(n,:),intersect(T(n+1,:),intersect(T(n+2,:),T(n+3,:))));
                res(n,1:length(v))=v;
            end
        case 5
            for n=1:length(T)-dy
                v=intersect(T(n,:),intersect(T(n+1,:),intersect(T(n+2,:),intersect(T(n+3,:),T(n+4,:)))));
                res(n,1:length(v))=v;
            end
     
     
    end
    end

  3. #23
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 185
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par phryte Voir le message
    Bonjour,

    disp(MM(I(k):I(k)+dy-1,V(k):V(k)+2*dx+1))

    Affiche la matrice recherchée sur Command Window à partir de la matrice MM contenant les caractères.
    Je l'ai remplacé par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     disp(M(I(k):I(k)+dy-1,VC(k):VC(k)+dx-1));
    Même principe à partir de la matrice M en chiffres


    Donne le nombre d'éléments non nuls de la matrice resu.

    Nouveau programme corrigé :

    LE NOMBRE DE LIGNES RECHERCHE EST LIMITE A 5 DANS LA FONCTION "inters"

    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
    clear
    M =[0     1     0     0     0     0     0     0     1     0     0
        1     0     0     0     0     0     1     0     1     0     0
        0     1     0     0     0     0     1     0     1     0     0
        1     1     0     0     0     0     0     1     1     1     0
        0     0     1     0     1     1     1     0     1     0     0
        0     0     1     1     1     1     0     0     0     0     0
        1     1     0     0     1     0     0     0     0     0     0
        1     0     0     1     0     1     0     0     0     0     0
        1     1     0     1     0     1     0     0     0     0     0
        1     1     0     1     1     1     1     0     1     0     0];
     [IL,JC]=size(M);
    MM=num2str(M);% Conversion en caractères
    dx=3;dy=4;% Dimensions de la matrice de zéros recherchée dx : colonnes dy : lignes 
    for n=1:IL
        r=strfind(MM(n,:), num2str(zeros(dx,1)'));% Recherche des chaînes de caractères candidates
        T(n,1:length(r))=r;% Rang des colonnes avec chaîne recherchée
    end
    resu=inters(M,T,dx,dy);% Fonction de calcul des zones
    disp(['Il y a : '  num2str(nnz(resu)) ' zone(s) de zéros de cotés : ' num2str(dx) ' Col  x ' num2str(dy) ' Lig'])
    disp(' ');
    [I,J,V]=find(resu);% calcul des indices
     
    for k=1:length(I)
        VC(k)=V(k)-2*(V(k)-1)/3;
        disp(['Matrice : ' num2str(k) '    ('  num2str(I(k)) ':'  num2str(VC(k)) ')'...
           '    ('  num2str(I(k)+dy-1) ':'  num2str(VC(k)+dx-1) ')' ]);
         disp(M(I(k):I(k)+dy-1,VC(k):VC(k)+dx-1));
        disp(' ');
    end
    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
    function res=inters(M,T,dx,dy)
    res=zeros(size(T));
    switch dy
        case 1
            res=T;
        case 2
            for n=1:length(T)-dy
                v=intersect(T(n,:),T(n+1,:));
                res(n,1:length(v))=v;
            end
        case 3
     
            for n=1:length(T)-dy
                v=intersect(T(n,:),intersect(T(n+1,:),T(n+2,:)));
                res(n,1:length(v))=v;
            end
        case 4
            for n=1:length(T)-dy
                v=intersect(T(n,:),intersect(T(n+1,:),intersect(T(n+2,:),T(n+3,:))));
                res(n,1:length(v))=v;
            end
        case 5
            for n=1:length(T)-dy
                v=intersect(T(n,:),intersect(T(n+1,:),intersect(T(n+2,:),intersect(T(n+3,:),T(n+4,:)))));
                res(n,1:length(v))=v;
            end
     
     
    end
    end
    bonsoir le code fonctionne sur votre matrice mais sur la mienne non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     fonction1
    Il y a : 3742 zone(s) de zéros de cotés : 3 Col  x 4 Lig
     
    Matrice : 1    (1:1)    (4:3)
         0     0     0
         0     0     0
         0     0     0
         0     0     0
     
     
    Matrice : 2    (2:1)    (5:3)
    que dis je faire SVP merci d"avance

  4. #24
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Bonjour,

    Avec le dernier programme envoyé je trouve :
    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
    Il y a : 5 zone(s) de zéros de cotés : 3 Col  x 4 Lig
     
    Matrice : 1    (1:3)    (4:5)
         0     0     0
         0     0     0
         0     0     0
         0     0     0
     
     
    Matrice : 2    (6:7)    (9:9)
         0     0     0
         0     0     0
         0     0     0
         0     0     0
     
     
    Matrice : 3    (1:4)    (4:6)
         0     0     0
         0     0     0
         0     0     0
         0     0     0
     
     
    Matrice : 4    (6:8)    (9:10)
         0     0     0
         0     0     0
         0     0     0
         0     0     0
     
     
    Matrice : 5    (6:9)    (9:11)
         0     0     0
         0     0     0
         0     0     0
         0     0     0
    Qu'appelles-tu fonction1 en tête de tes résultats ?

  5. #25
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 185
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par phryte Voir le message
    Bonjour,

    Avec le dernier programme envoyé je trouve :
    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
    Il y a : 5 zone(s) de zéros de cotés : 3 Col  x 4 Lig
     
    Matrice : 1    (1:3)    (4:5)
         0     0     0
         0     0     0
         0     0     0
         0     0     0
     
     
    Matrice : 2    (6:7)    (9:9)
         0     0     0
         0     0     0
         0     0     0
         0     0     0
     
     
    Matrice : 3    (1:4)    (4:6)
         0     0     0
         0     0     0
         0     0     0
         0     0     0
     
     
    Matrice : 4    (6:8)    (9:10)
         0     0     0
         0     0     0
         0     0     0
         0     0     0
     
     
    Matrice : 5    (6:9)    (9:11)
         0     0     0
         0     0     0
         0     0     0
         0     0     0
    Qu'appelles-tu fonction1 en tête de tes résultats ?
    Bonjour,
    fonction1 est celle là la fonction principale qui commence par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    clear
    M =[0     1     0     0     0     0     0     0     1     0     0
        1     0     0     0     0     0     1     0     1     0     0
        0     1     0     0     0     0     1     0     1     0     0
        1     1     0     0     0     0     0     1     1     1     0
        0     0     1     0     1     1     1     0     1     0     0
        0     0     1     1     1     1     0     0     0     0     0
        1     1     0     0     1     0     0     0     0     0     0
        1     0     0     1     0     1     0     0     0     0     0
        1     1     0     1     0     1     0     0     0     0     0
        1     1     0     1     1     1     1     0     1     0     0];
     [IL,JC]=size(M);
    à propos du résultat aussi votre matrice donne le même résultat que la mienne vous pouvez remarquer dessus le résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Matrice : 2    (6:7)    (9:9)
         0     0     0
         0     0     0
         0     0     0
         0     0     0
    c'est pas une matrice 3x4 pour les indices ( (6:7) (9:9))problème de compteur je pense (9:9) en fait toutes les entêtes sont fausse (9:9) (9:10) c'est longueur 1 et longueur 2 mais pas 4 ?

  6. #26
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Bonjour,

    Matrice : 2 (6:7) (9:9)
    Cela signifie que la matrice 2 commence à la 6e ligne 7e colonne et fini à la 9e ligne 9e colonne. Soit le début et la fin de la matrice.

    c'est bien une matrice 4x3

    Si tu veux une autre représentation ?

  7. #27
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 185
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par phryte Voir le message
    Bonjour,

    Matrice : 2 (6:7) (9:9)
    Cela signifie que la matrice 2 commence à la 6e ligne 7e colonne et fini à la 9e ligne 9e colonne. Soit le début et la fin de la matrice.

    c'est bien une matrice 4x3

    Si tu veux une autre représentation ?
    ah d'accord j'ai cru que 6ème ligne 7 ème ligne et 9 ième colonne !
    oui il vaut mieux que ce soit (ligne i1:ligneik) (colonne j1:colonne jk)
    autre question pourquoi c'est restreint à 5 ou 4 seulement le travail que j'ai fait pour 14 est il faut ?
    merci d'avance

  8. #28
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut extraire une sous matrice d'une matrice sous condition
    Oui, si tu mets plus de 5 lignes c'est faux.
    Je travaille à simplifier la fonction inters.

  9. #29
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Bonjour,

    Tu remplaces la fonction inters par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function res=intrec(T,dy)
    res=zeros(size(T));
    for  n=1:length(T)-dy
        v=T(n,:);
        for p=n+1:dy+n-1
            v=intersect(v,T(p,:));
        end
        res(n,1:length(v))=v;
    end
    Avec l'appel :

  10. #30
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 185
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par phryte Voir le message
    Oui, si tu mets plus de 5 lignes c'est faux.
    pourquoi c'est faux ? en fait je dois extraire des sous matrices de grandes tailles!
    Citation Envoyé par phryte Voir le message
    Je travaille à simplifier la fonction inters.
    j'ai essayé Mintersect au lieu d'intersect et ça n'a pas marché

  11. #31
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 185
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par phryte Voir le message
    Bonjour,

    Tu remplaces la fonction inters par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function res=intrec(T,dy)
    res=zeros(size(T));
    for  n=1:length(T)-dy
        v=T(n,:);
        for p=n+1:dy+n-1
            v=intersect(v,T(p,:));
        end
        res(n,1:length(v))=v;
    end
    Avec l'appel :
    j'ai pas compris le principe plus d'explication s'il vous plait

    bon je l'ai essayé et voilà l'out put
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Matrice : 12    (7:3)    (10:6)
         0     0     1     0
         0     1     0     1
         0     1     0     1
         0     1     1     1
     
     
    Matrice : 13    (8:2)    (11:5)
    Index exceeds matrix dimensions.
     
    Error in fonction1 (line 28)
         disp(M(I(k):I(k)+dy-1,VC(k):VC(k)+dx-1));

  12. #32
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Dans le Programme principal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [IL,JC]=size(M);
    MM=num2str(M);% Conversion en caractères
    dx=4;dy=4;% Dimensions de la matrice de zéros recherchée dx : colonnes dy : lignes 
    for n=1:IL
        r=strfind(MM(n,:), num2str(zeros(dx,1)'));% Recherche des chaînes de caractères candidates
        T(n,1:length(r))=r;% Rang des colonnes avec chaîne recherchée
    end
    %resu=inters(M,T,dx,dy);% Fonction de calcul des zones
     
    resu=intrec(T,dy);
    ......
    Tu remplaces la ligne resu=inters( par la ligne resu=intres(

  13. #33
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 185
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par phryte Voir le message
    Dans le Programme principal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [IL,JC]=size(M);
    MM=num2str(M);% Conversion en caractères
    dx=4;dy=4;% Dimensions de la matrice de zéros recherchée dx : colonnes dy : lignes 
    for n=1:IL
        r=strfind(MM(n,:), num2str(zeros(dx,1)'));% Recherche des chaînes de caractères candidates
        T(n,1:length(r))=r;% Rang des colonnes avec chaîne recherchée
    end
    %resu=inters(M,T,dx,dy);% Fonction de calcul des zones
     
    resu=intrec(T,dy);
    ......
    Tu remplaces la ligne resu=inters( par la ligne resu=intres(
    oui c'est ce que j'ai fait et l'out put était (plutôt une partie de l'out put
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Matrice : 12    (7:3)    (10:6)
         0     0     1     0
         0     1     0     1
         0     1     0     1
         0     1     1     1
     
     
    Matrice : 13    (8:2)    (11:5)
    Index exceeds matrix dimensions.
     
    Error in fonction1 (line 28)

  14. #34
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut extraire une sous matrice d'une matrice sous condition
    Bonjour,

    Envoie nous les deux programmes que tu utilises.

  15. #35
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 185
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par phryte Voir le message
    Bonjour,

    Envoie nous les deux programmes que tu utilises.
    Bonjour, ce matlab là me semble bizarre ce matin j'ai fait un clear et j'ai rechargé ma matrice et un coup miraculeux me donne de bons résultat , vraiment je ne comprends pas pourquoi ? pourriez vous m'expliquer s'il vous plait
    la fonction principale testée sur ma matrice est :
    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
     
    M=mat(200:2000,200:2000);
    [IL,JC]=size(M);
    MM=num2str(M);% Conversion en caractères
    dx=80;dy=80;% Dimensions de la matrice de zéros recherchée dx : colonnes dy : lignes 
    for n=1:IL
        r=strfind(MM(n,:), num2str(zeros(dx,1)'));% Recherche des chaînes de caractères candidates
        T(n,1:length(r))=r;% Rang des colonnes avec chaîne recherchée
    end
    resu=inters(T,dy);% Fonction de calcul des zones
    disp(['Il y a : '  num2str(nnz(resu)) ' zone(s) de zéros de cotés : ' num2str(dx) ' Col  x ' num2str(dy) ' Lig'])
    disp(' ');
    [I,J,V]=find(resu);% calcul des indices
     
    for k=1:length(I)
        VC(k)=V(k)-2*(V(k)-1)/3;
        disp(['Matrice : ' num2str(k) '    ('  num2str(I(k)) ':'  num2str(VC(k)) ')'...
            '    ('  num2str(I(k)+dy-1) ':'  num2str(VC(k)+dx-1) ')' ]);
         disp(M(I(k):I(k)+dy-1,VC(k):VC(k)+dx-1));
        disp(' ');
    end
    la fonction inters est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function res=inters(T,dy)
    res=zeros(size(T));
    for  n=1:length(T)-dy
        v=T(n,:);
        for p=n+1:dy+n-1
            v=intersect(v,T(p,:));
        end
        res(n,1:length(v))=v;
    end
    Est ce que je dois à chaque fois faire un clear si oui comment puisse je charger une matrice d'un dossier automatiquement car à chaque fois je dois ouvrir un dossier dans mon bureau pour ajouter la matrice mat au workspace matlab ?
    Autre question et comme vous remarquez les indices sont comme suit :
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    Matrice : 6651    (8:123)    (88:203)
      Columns 1 through 21
     
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
    alors que ma matrice est (200:2000,200:2000)
    alors j'aimerais que les indices deviennent (208:323,288:403)
    et si possible stocker les indices des matrices dans un tableau comme suit :
    sous matrice l1 l2 c1 c2
    sous matrice1 208 288 323 403
    sous matrice 2 .. .. .. ..
    etc .. .. .. ..
    bon je crois et puisque je vais faire des traitement sur ces matrices par la suite je dois utiliser la fonction any pour s'assurer qu'il n'ya pas des 1 dans les sous matrice
    cette commande est elle juste: any(fonction1,1) ?
    alors si la commande est true je dois vérifier le code si non je passe au traitement
    j'espère que j'étais claire
    et merci infiniment d'avance pour toute réponse

  16. #36
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut extraire une sous matrice d'une matrice sous condition
    Bonjour,

    Il faut prendre l'habitude de commencer le programme principal par "clear" ou "clear all", cela permet de raz les variables utilisées antérieurement.

    Pour tester si les sous matrices sont bien nulles tu cumules les sous matrices dans un tableau TSM et tu testes nnz(TSM) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     TSM=[];
    for k=1:length(I)
        VC(k)=V(k)-2*(V(k)-1)/3;
        disp(['Matrice : ' num2str(k) '    ('  num2str(I(k)) ':'  num2str(VC(k)) ')'...
            '    ('  num2str(I(k)+dy-1) ':'  num2str(VC(k)+dx-1) ')' ]);
         disp(M(I(k):I(k)+dy-1,VC(k):VC(k)+dx-1));
        disp(' ');
        TSM=[TSM M(I(k):I(k)+dy-1,VC(k):VC(k)+dx-1)];% Cumul des sous matrices
     
    end
    %Test de sous matrices nulles
    nnz(TSM)
    Pour le tableau :
    Au début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    clear
     TR(1,1)={'S/M'};
     TR(1,2)={'L1'};
     TR(1,3)={'L2'};
     TR(1,4)={'C1'};
     TR(1,5)={'C2'};
    A la fin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    for k=1:length(I)
        VC(k)=V(k)-2*(V(k)-1)/3;
        disp(['Matrice : ' num2str(k) '    ('  num2str(I(k)) ':'  num2str(VC(k)) ')'...
           '    ('  num2str(I(k)+dy-1) ':'  num2str(VC(k)+dx-1) ')' ]);
         %disp(M(I(k):I(k)+dy-1,VC(k):VC(k)+dx-1));
        disp(' ');
        TR(k+1,1)={[k]};
        TR(k+1,2)={[I(k)]};
        TR(k+1,3)={[I(k)+dy-1]};
        TR(k+1,4)={[VC(k)]};
        TR(k+1,5)={[VC(k)+dx-1]};
    end
    TR
    cellplot(TR)
    Pour les numéros tu ajoutes la base en ligne et la base en colonne

  17. #37
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 185
    Points : 51
    Points
    51
    Par défaut
    Bonsoir,
    Citation Envoyé par phryte Voir le message
    Bonjour,

    Il faut prendre l'habitude de commencer le programme principal par "clear" ou "clear all", cela permet de raz les variables utilisées antérieurement.

    Pour tester si les sous matrices sont bien nulles tu cumules les sous matrices dans un tableau TSM et tu testes nnz(TSM) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     TSM=[];
    for k=1:length(I)
        VC(k)=V(k)-2*(V(k)-1)/3;
        disp(['Matrice : ' num2str(k) '    ('  num2str(I(k)) ':'  num2str(VC(k)) ')'...
            '    ('  num2str(I(k)+dy-1) ':'  num2str(VC(k)+dx-1) ')' ]);
         disp(M(I(k):I(k)+dy-1,VC(k):VC(k)+dx-1));
        disp(' ');
        TSM=[TSM M(I(k):I(k)+dy-1,VC(k):VC(k)+dx-1)];% Cumul des sous matrices
     
    end
    %Test de sous matrices nulles
    nnz(TSM)
    Pour le tableau :
    Au début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    clear
     TR(1,1)={'S/M'};
     TR(1,2)={'L1'};
     TR(1,3)={'L2'};
     TR(1,4)={'C1'};
     TR(1,5)={'C2'};
    A la fin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    for k=1:length(I)
        VC(k)=V(k)-2*(V(k)-1)/3;
        disp(['Matrice : ' num2str(k) '    ('  num2str(I(k)) ':'  num2str(VC(k)) ')'...
           '    ('  num2str(I(k)+dy-1) ':'  num2str(VC(k)+dx-1) ')' ]);
         %disp(M(I(k):I(k)+dy-1,VC(k):VC(k)+dx-1));
        disp(' ');
        TR(k+1,1)={[k]};
        TR(k+1,2)={[I(k)]};
        TR(k+1,3)={[I(k)+dy-1]};
        TR(k+1,4)={[VC(k)]};
        TR(k+1,5)={[VC(k)+dx-1]};
    end
    TR
    cellplot(TR)

    c'est comme ça ?

    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
     
    clear
     TR(1,1)={'S/M'};
     TR(1,2)={'L1'};
     TR(1,3)={'L2'};
     TR(1,4)={'C1'};
     TR(1,5)={'C2'};
     
     [IL,JC]=size(M);
    MM=num2str(M);% Conversion en caractères
    dx=80;dy=80;% Dimensions de la matrice de zéros recherchée dx : colonnes dy : lignes 
    for n=1:IL
        r=strfind(MM(n,:), num2str(zeros(dx,1)'));% Recherche des chaînes de caractères candidates
        T(n,1:length(r))=r;% Rang des colonnes avec chaîne recherchée
    end
    resu=inters(T,dy);% Fonction de calcul des zones
    disp(['Il y a : '  num2str(nnz(resu)) ' zone(s) de zéros de cotés : ' num2str(dx) ' Col  x ' num2str(dy) ' Lig'])
    disp(' ');
    [I,J,V]=find(resu);% calcul des indices
     
     TSM=[];
     for k=1:length(I)
        VC(k)=V(k)-2*(V(k)-1)/3;
        disp(['Matrice : ' num2str(k) '    ('  num2str(I(k)) ':'  num2str(VC(k)) ')'...
           '    ('  num2str(I(k)+dy-1) ':'  num2str(VC(k)+dx-1) ')' ]);
         %disp(M(I(k):I(k)+dy-1,VC(k):VC(k)+dx-1));
        disp(' ');
        TSM=[TSM M(I(k):I(k)+dy-1,VC(k):VC(k)+dx-1)];% Cumul des sous matrices
     
        TR(k+1,1)={[k]};
        TR(k+1,2)={[I(k)]};
        TR(k+1,3)={[I(k)+dy-1]};
        TR(k+1,4)={[VC(k)]};
        TR(k+1,5)={[VC(k)+dx-1]};
    end
    TR
    cellplot(TR)
    et voilà le résultat est
    au début

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Il y a : 4552 zone(s) de zéros de cotés : 80 Col  x 80 Lig
    et à la fin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Matrice : 1385    (1818:11)    (1897:90)
     
    Error using horzcat
    Out of memory. Type HELP MEMORY for your options.
     
    Error in fonction1 (line 27)
        TSM=[TSM M(I(k):I(k)+dy-1,VC(k):VC(k)+dx-1)];% Cumul des sous matrices
    c'est quoi le problème ?

    Pour les numéros tu ajoutes la base en ligne et la base en colonne
    j'ai pas compris celà ?
    merci d'avance pour toute aide

  18. #38
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut extraire une sous matrice d'une matrice sous condition
    Bonjour,

    L'erreur vient du fait que les sous matrices sont trop nombreuses.
    Tu supprimes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TSM=[];
     
    TSM=[TSM M(I(k):I(k)+dy-1,VC(k):VC(k)+dx-1)];% Cumul des sous matrices
    et tu ajoute erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    clear
     TR(1,1)={'S/M'};
     TR(1,2)={'L1'};
     TR(1,3)={'L2'};
     TR(1,4)={'C1'};
     TR(1,5)={'C2'};
     erreur=0;
    et :
    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
    for k=1:length(I)
        VC(k)=V(k)-2*(V(k)-1)/3;
        disp(['Matrice : ' num2str(k) '    ('  num2str(I(k)) ':'  num2str(VC(k)) ')'...
           '    ('  num2str(I(k)+dy-1) ':'  num2str(VC(k)+dx-1) ')' ]);
         %disp(M(I(k):I(k)+dy-1,VC(k):VC(k)+dx-1));
        disp(' ');
        TR(k+1,1)={[k]};
        TR(k+1,2)={[I(k)]};
        TR(k+1,3)={[I(k)+dy-1]};
        TR(k+1,4)={[VC(k)]};
        TR(k+1,5)={[VC(k)+dx-1]};
        if nnz([M(I(k):I(k)+dy-1,VC(k):VC(k)+dx-1)])~=0
        erreur=erreur+1;
        end
    end
    disp(['Nb d erreurs dnas les sous matrices = ' num2str(erreur)])
    TR
    cellplot(TR)
    Quand tu programmes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    M=mat(200:2000,200:2000);
    200 est la base en lignes et 200 est la base en colonnes. Tu ajoutes ces valeurs aux indices trouvés dans le programme qui calcule à partir de 1.

  19. #39
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 185
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par phryte Voir le message
    Bonjour,

    L'erreur vient du fait que les sous matrices sont trop nombreuses.
    Tu supprimes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TSM=[];
     
    TSM=[TSM M(I(k):I(k)+dy-1,VC(k):VC(k)+dx-1)];% Cumul des sous matrices
    et tu ajoute erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    clear
     TR(1,1)={'S/M'};
     TR(1,2)={'L1'};
     TR(1,3)={'L2'};
     TR(1,4)={'C1'};
     TR(1,5)={'C2'};
     erreur=0;
    et :
    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
    for k=1:length(I)
        VC(k)=V(k)-2*(V(k)-1)/3;
        disp(['Matrice : ' num2str(k) '    ('  num2str(I(k)) ':'  num2str(VC(k)) ')'...
           '    ('  num2str(I(k)+dy-1) ':'  num2str(VC(k)+dx-1) ')' ]);
         %disp(M(I(k):I(k)+dy-1,VC(k):VC(k)+dx-1));
        disp(' ');
        TR(k+1,1)={[k]};
        TR(k+1,2)={[I(k)]};
        TR(k+1,3)={[I(k)+dy-1]};
        TR(k+1,4)={[VC(k)]};
        TR(k+1,5)={[VC(k)+dx-1]};
        if nnz([M(I(k):I(k)+dy-1,VC(k):VC(k)+dx-1)])~=0
        erreur=erreur+1;
        end
    end
    disp(['Nb d erreurs dnas les sous matrices = ' num2str(erreur)])
    TR
    cellplot(TR)
    merci beaucoup ça fonctionne
    j'ai remarqué qu'il y a des intersections entre les matrices par exemple une matrice (1:80,1:80) et l'autre (2:81,2:81)
    je peux ajouter uniques(TR) pour avoir des matrices distinctes ?
    Merci infiniment d'avance pour toute réponse

  20. #40
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Il y a des intersections entre les matrices par exemple une matrice (1:80,1:80) et l'autre (2:81,2:81).
    Le programme est fait pour calculer toutes les sous-matrices POSSIBLES.

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/03/2016, 19h03
  2. Réponses: 3
    Dernier message: 20/02/2015, 11h19
  3. [Débutant] affecter une matrice a une variable cree par une boucle
    Par chipo01 dans le forum MATLAB
    Réponses: 5
    Dernier message: 06/04/2013, 19h05
  4. [Toutes versions] Sous VBA appeler une cellule excel avec une variable
    Par karatetiger76 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/04/2011, 19h04
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

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