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 :

Vectorisation sur matlab


Sujet :

MATLAB

  1. #1
    Membre actif Avatar de cedd70
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Mars 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 154
    Points : 263
    Points
    263
    Par défaut Vectorisation sur matlab
    Bonjour,

    Je cherche à Vectoriser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      for j = 1 : size(ale,1)
        inter(mat(:,ale(j))+1) = not(inter(mat(:,ale(j))+1));
      end
    j'ai essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    inter(mat(:,ale(:))+1) = not(inter(mat(:,ale(:))+1));
    mais ca marche pas.

    Des idées merci.

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 106
    Points : 110
    Points
    110
    Par défaut
    Bonjour,

    Citation Envoyé par cedd70 Voir le message
    j'ai essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    inter(mat(:,ale(:))+1) = not(inter(mat(:,ale(:))+1));
    mais ca marche pas.

    Des idées merci.
    Tout dépend de la taille de ta matrice ale. Tel qu'écrit transforme une matrice en vecteur colonne. De fait, tu indexes alors les lignes de ta matrice inter. Normalement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    inter(mat(:,ale)+1) = not(inter(mat(:,ale)+1));
    devrait fonctionner.

    @ ++

  3. #3
    Membre actif Avatar de cedd70
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Mars 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 154
    Points : 263
    Points
    263
    Par défaut
    Merci mais ca ne marche pas,

    Le problème c'est que le résultat actuelle dépend du précédent. j'avais déjà bien un vecteur colonne.

    exemple :

    ale = [1 2]'

    mat(1) = 001
    mat(2) = 011

    sortie :
    en une ligne =>
    inter = 011

    avec ma boucle
    inter = 010

    Pour faire simple je dois inverser (0 ou 1) chaque cellule de matrice(inter) aux coordonnées mat(ale)

    je m'explique surement mal :/

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 106
    Points : 110
    Points
    110
    Par défaut
    Ce n'est pas très clair pour moi,

    En fait, si mat est sensée indexer ta matrice inter, elle ne devrait pas contenir des zéros à moins que ce soit des valeurs logiques. Et si tel est le cas la somme mat(:,ale)+1 conduit à des réels (et de facto, tu n'as que les indices 1 et 2). Sinon, cela entraîne tout de même un décalage.

    Peux-tu donner un exemple complet avec avec ta matrice inter?

    @++

  5. #5
    Membre actif Avatar de cedd70
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Mars 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 154
    Points : 263
    Points
    263
    Par défaut
    Une exemple sera plus claire oui

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    mat = matrice de 541x300 avec des nombres allant de 1 à 1000
     
    inter =zeros(1000,1);
    ale = [1 2]';
     
    for j = 1 : size(ale,1)
       inter(mat(:,ale(j))+1) = not(inter(mat(:,ale(j))+1));
    end
    par exemple :

    lire les deux 1er ligne car ale = [1 2]';

    si on lit dans la première ligne de mat =[ 1 5 7]
    je veux inverser l’état de inter(1) inter(5) et inter(7)

    dans la seconde ligne de si mat = [1 6 8]
    je veux inverser l’état de inter(1) inter(6) et inter(8)

    on obtiendra donc
    inter = [0 0 0 0 1 1 1 1 ]et que des zero
    inter(1) = 0 car on a inversé deux fois sont état

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 313
    Points : 52 939
    Points
    52 939
    Par défaut
    Comme ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    mat = [1 5 7 ; 1 6 8]
     
    % nombre d'inversions par indice
    n = histc(mat(:), 1:8)
     
    % test de parité du nombre d'inversions
    inter = bitget(n, 1)

  7. #7
    Membre actif Avatar de cedd70
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Mars 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 154
    Points : 263
    Points
    263
    Par défaut
    Merci ca marche,

    Mais je suis déçue, je faisais ça pour gagner du temps, mais c'est beaucoup plus lent

Discussions similaires

  1. [MEX] Modifier des Mex-Files Matlab 7 pour utilisation sur Matlab 5.3
    Par mathieu2703 dans le forum MATLAB
    Réponses: 3
    Dernier message: 03/08/2007, 12h20
  2. Matrice indicée sur matlab
    Par Surf!ng_jOe dans le forum MATLAB
    Réponses: 2
    Dernier message: 27/07/2007, 14h28
  3. Problème variable locale sur MATLAB
    Par nuans dans le forum MATLAB
    Réponses: 10
    Dernier message: 12/04/2007, 10h34
  4. Nombre pair sur Matlab
    Par cricri04 dans le forum MATLAB
    Réponses: 2
    Dernier message: 16/03/2007, 16h46
  5. Un nouveau qui a besoin d'aide sur MATLAB
    Par bf491499 dans le forum MATLAB
    Réponses: 4
    Dernier message: 26/02/2007, 16h10

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