Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

Supprimer les zeros de chaque colonne d'un matrice sans changer le nombre de colonne avec Matlab



  1. #1
    matretro

    Supprimer les zeros de chaque colonne d'un matrice sans changer le nombre de colonne avec Matlab

    Bonjour,

    J'ai un soucis sur lequel je bute depuis plusieurs jours sous matlab. J'ai vu qu'il y avait des cracks par ici alors je vous soumets mon problème. Si quelqu'un trouve une solution, je lui en serai très reconnaissant.

    Voici mon problème : j'ai 2 matrices comme si dessus. Elles ont le même nombre de colonne mais pas le même nombre de ligne. Sur chaque colonne, il y a le même nombre de valeurs non nulles.
    La première matrice
    A=[1 2 9;...
    58 6 5;...
    0 65 98;...
    0 0 65;...
    6 6 0;...
    1 2 0;...
    0 5 8;...
    0 0 0;...
    2 3 0];

    B=[0 6 0;...
    0 0 0 ;...
    0 65.1 0;...
    1 0 0;...
    0 0 9.2;...
    0 0 0;...
    0 6 0;...
    0 2 0;...
    58 0 0 ;...
    0 0 0;...
    0 0 5;...
    0 5 0 ;...
    6 0 98;...
    0 0 65;...
    1 3 0 ;...
    2 0 8 ];

    J'aimerai comparer ces valeurs colonne par colonne mais sans faire de boucle.

    L'objectif, c'est d'avoir des matrices ou il n'y aurait plus de zéros.
    Pour faire la différence des deux matrices et connaitre les colonnes ou la différence est nulle.

    exemple de ce que je veux :

    A1=[1 2 9;...
    58 6 5;...
    6 65 98;...
    1 6 65;...
    2 2 8;...
    0 5 0;...
    0 3 0];

    B1=[1 2 9.2;...
    58 6 5;...
    6 65.1 98;...
    1 6 65;...
    2 2 8;...
    0 5 0;...
    0 3 0];

    Code:
    sum(abs(A1-B1),1)
    [0 0.1 0.2]
    Il va sans dire que mes matrices sont en réalités bien plus grandes (200x8000) environ.

    J'ai essayer des codes comme :
    Code:
    A1=A(A==0);
    B1=B(B==0);
    sum(abs(A1-B1),1);
    mais je perds la forme de la matrice et je ne plus savoir quel colonnes correspond à une somme de différences de valeurs absolues nulle.

    Merci d'avance pour votre aide.

    -----


  2. #2
    fred1599

    Re : Supprimer les zeros de chaque colonne d'un matrice sans changer le nombre de colonne avec Matla

    T'as lu ce tuto?

    La méthode find te permettrait de trouver toutes les valeurs de tes matrices supérieures à 0.

    Je connais pas matlab, mais j'ai du mal à imaginer ce problème sans indexage et donc sans boucle..

  3. #3
    Paraboloide_Hyperbolique

    Re : Supprimer les zeros de chaque colonne d'un matrice sans changer le nombre de colonne avec Matla

    Bonsoir,

    Effectivement, la méthode find peut solutionner le problème. Si je ne me trompe pas:

    Code:
    indexB = find(sum(B, 2) ~= 0); % Index des lignes non-nulles de B
    indexA = find(sum(A, 2) ~= 0); % Index des lignes non-nulles de A
    A(indexA, :)-B(indexB, :); % Différence des deux matrices
    Dites-moi si vous obtenez le résultat souhaité ou non.

Sur le même thème :

Discussions similaires

  1. programmation matlab d'une variation de 5% de chiffres contenus dans une colonne d'un tableau
    Par Piwhy17 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 03/08/2012, 12h00
  2. [matlab]norme de chaque terme d'un matrice
    Par belgianengineer dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 04/03/2012, 18h51
  3. somme des cellules d'une colonne si les cellules de la colonne à coté est égale à 2011
    Par lekoukou13 dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 28/01/2012, 19h42
  4. supprimer colonne matlab
    Par momo032114 dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 25/07/2008, 09h52
  5. Effacer une colonne dans une matrice sous Matlab
    Par jdeboer dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 10/01/2005, 18h21