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 :

Simplifier ce programme?


Sujet :

MATLAB

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 206
    Points : 90
    Points
    90
    Par défaut Simplifier ce programme?
    Bonjour,
    J'ai une matrice P de dimension: 61*3*18
    et j'aimerai remplacer toutes les valeurs nulles de la colonne 3 du 2ème indice par des NaN.
    Si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    for i=1:61
        for j=1:18
            if P(i,3,j)==0
                P(i,3,j)=NaN;
            end
        end
    end
    C'est bien, ça marche mais je pense qu'on peut faire mieux!
    Quelque chose du genre:
    Mais là, il me mets toutes les valeurs nulles à NaN. Je n'arrive pas à écrire ce que je veux faire avec cette méthode.
    Merci de m'aider

  2. #2
    Membre éclairé Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Points : 825
    Points
    825
    Par défaut
    salut
    ceci devrait fonctionner mais peut-être être encore simplifiable (variable intermédiaire).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    P_inter = P(:,3,:);
    P_inter(P_inter==0)=Nan; % indexation logique
    P(:,3,:) =P_inter;

  3. #3
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    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 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Par définition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >> 0/0
     
    ans =
     
       NaN
    Donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    P(:,3,:) = P(:,3,:)./(P(:,3,:)>0);

Discussions similaires

  1. Besoin d'aide pour simplifier un programme.
    Par Xaíg62 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 12/10/2014, 17h52
  2. Faut-il simplifier la programmation et revoir ses fondements ? Un journaliste s'essaye au développement
    Par Idelways dans le forum Débats sur le développement - Le Best Of
    Réponses: 383
    Dernier message: 24/02/2013, 00h16
  3. simplifier un programme Jquery
    Par djo007 dans le forum jQuery
    Réponses: 6
    Dernier message: 26/06/2012, 12h41
  4. Simplifier un programme avec une macro
    Par huître dans le forum Macro
    Réponses: 14
    Dernier message: 30/04/2012, 18h49
  5. Réponses: 0
    Dernier message: 15/06/2011, 00h32

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