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 :

suppression des espaces d'une chaîne de caractère


Sujet :

MATLAB

  1. #1
    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 suppression des espaces d'une chaîne de caractère
    bonjour
    il ne semble pas y avoir de fonctions toutes faites pour éliminer les espaves d'une chaînes de caractère.
    le programme que j'adapte utilise la fonction suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function output = elimWhiteSpace(string)
     
        output = '';
     
        for i=1:length(string)
            if string(i)~=' '
                output = strcat(output,string(i));
            end
        end
     
    end
    qui n'est pas du tout optimisé et dans certains cas je peux arriver à 13128 appels de la fonctions strcat ce qui induit 3.671 secondes d'exécution.
    j'ai pensé à une première optimisation avec
    mais il me semble tout de même étrange qu'il n' y ait rien de prêt.
    merci de vos avis et de vos propositions

  2. #2
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Peut-être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sws = strrep(str,' ','');
    Je ne sais pas ce qu'il y a dans le ventre de STRREP et donc si cela sera rapide ou non, à tester.

    Sinon ta solution avec ISSPACE est bien et prend plus de choses en compte (\t et autres ressemblants à l'espace)

  3. #3
    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
    merci
    a priori cela ne devrait pas poser de problèmes ispace prends en compte tous les cractères 'blancs' et strrepsemble peu efficace
    je dois aussi inversement insérer des espaces dans une chaîne.
    j'ai pensé au code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    a='toto';
    n=length(a);
    t=char(32*ones(1,2*n-1));
    for i=1:n
    t(2*i-1)=a(i);
    end
    b='t o t o';
    strcmp(t,b)
     
    ans =
     
         1
    j'ai pensé à remplacer la boucle par
    mais ca ne semble pas pertinent outre mesure

  4. #4
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Si c'est des problèmes de performances, le mieux est d'étudier ça à la loupe (avec des données de tailles différentes) avec le PROFILER.

  5. #5
    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.
    Une idée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    clear
    str='chai ne de carac tere s'
    stm=str(str~=' ')

  6. #6
    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
    merci.
    je ferai tous les tests.
    avec mes deux petites améliorations je gagne déjà plus de 3secondes.

  7. #7
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Que penses tu de ceci :

    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
     
     
    >> a='help deblank : Strip trailing blanks from end of string                   .' 
     
    a =
     
    help deblank : Strip trailing blanks from end of string                   .
     
    >> a(a~=' ')
     
    ans =
     
    helpdeblank:Striptrailingblanksfromendofstring.
     
    >>
    ici tu n'as pas besoin d'appeler isspace

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

Discussions similaires

  1. [WebI XiR2] Suppression d'un espace dans une chaîne de caractères
    Par SGA99 dans le forum Débuter
    Réponses: 6
    Dernier message: 02/12/2010, 17h12
  2. Effacer les espaces dans une chaîne de caractères
    Par JohnnyWalk dans le forum Débuter avec Java
    Réponses: 16
    Dernier message: 19/07/2007, 14h13
  3. [Free Pascal] Suppression des espaces dans une chaîne
    Par Maxence45 dans le forum Free Pascal
    Réponses: 43
    Dernier message: 18/03/2007, 11h29
  4. Suppression des espaces ds une chaîne
    Par petitnuage dans le forum Langage
    Réponses: 2
    Dernier message: 04/06/2006, 15h59
  5. Suppression d'espaces dans une chaîne
    Par dafalri dans le forum Langage
    Réponses: 11
    Dernier message: 20/02/2006, 13h13

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