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 :

Rajouter un caractère à toutes les valeurs d'une matrice contenue dans une cellule


Sujet :

MATLAB

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 76
    Points : 58
    Points
    58
    Par défaut Rajouter un caractère à toutes les valeurs d'une matrice contenue dans une cellule
    Bonjour!

    J'ai un petit souci pour modifier toutes les cellues d'un tableau. En fait j'ai une centaine de cellules qui contiennent toutes une ligne avec des pressions qui sont exprimées en Pa

    J'ai besoin qu'après chaque pression de chacune des cellules il y ait un point. Par exemple :14677. et non 14677

    Je vous avoue que ca bloque pour moi ici. J'ai essayé de créé une cellule où on retrouve un point et concaténer toutes mes pressions avec ma cellule ca bloque. Après queques refexions ca paraît logique vu que mes pressions ne sont pas rangées dans des cellules mais dans un vecteur ligne!

    J'ai donc essayé cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i=1:length(pr)
    for j=1:length(pr{i})
    pr2{i}{j}=mat2cell(pr{i}(j),1,1);
    end
    end
    mais ca me dit "cell contents assignment to a non-cell array objectif"



    Quelqu'un saurait-il pourquoi? ou aurait une auter solution à mon problème de départ???

    Merci

  2. #2
    Rédacteur/Modérateur

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    X = {'123' '456' '789'};
     
    X = strcat(X,'.');
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    X = {123 456 789};
     
    X = strcat(cellfun(@num2str,X,'uniformoutput',false),'.');

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 76
    Points : 58
    Points
    58
    Par défaut
    Alors tout d'abord merci du coup de main!

    Pour ta première solution je n'ai pas de message d'erreur mais j'obtiens plein de caractères bizarres (des carrés, etc,..). Est-ce que c'est parce que mes pressions sont rangées dans un vecteur ligne à 'intérieur d'une cellule et non pas chaque pression dans une sous-cellule?

    Pour la deuxième je n'ai toujours pas le point. Le seul changement c'est qu'au lieu d'avoir mes pressions rangées dans un vecteur ligne, elles sont toutes regroupées dans une seule cellule et séparées par des espaces!

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Bien que je ne vois pas l'intérêt d'une telle chose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pr2 = cellfun(@(x) [num2str(x(:)) repmat('.',length(x),1)],pr,'uniformoutput',false);

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 76
    Points : 58
    Points
    58
    Par défaut


    Ca marche parfaitement excepté que les pressions créées ne sont plus rangées dans une matrice à 'intérieur de chaque cellule mais à la suite les unes des autres dans cette cellule. En farfouillant je devrais trouver la bonne fonction.

    L'intérêt pour moi est un peu capilotracté. L'idée c'est de créer avec matlab des fichiers de sortie qui ont un format très précis au caractère près car ils me servent par la suite dans un autre programme. Le probème c'est qu'avant ces fichiers étaient créés en C donc en mettant le format f7.0 en C on avait la pression suivi d'un point, ce que ne fait pas matlab! Comme je dois utiliser tous pleins de fichiers (où les pressions sont suivis d'un point) en plus de ce que je crée, je dois avoir ce fichu point! Ca m'a paru la seule solution ..

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 76
    Points : 58
    Points
    58
    Par défaut
    Ouais bah finalement non..

    Pas moyen d'obtenir chaque pression (+ le point) dans un élément d'une vecteur comme je l'avais au début! (un tableau de cellules avec à l'intérieur de chacune des cellules un vecteur, où chaque élément du vecteur est une pression différente). Pour info mes pressions sont sous forme d'une chaîne de caractères dont la taille varie.

    J'ai essayé toutes les fonctions que je connaissais.. Quelqu'un a une idée?

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par guiyom31 Voir le message
    Pour info mes pressions sont sous forme d'une chaîne de caractères dont la taille varie.
    Dans ce cas, inutile d'utiliser num2str:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pr2 = cellfun(@(x) [x(:) repmat('.',length(x),1)],pr,'uniformoutput',false);

  8. #8
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    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 304
    Points : 52 882
    Points
    52 882
    Par défaut
    Pourquoi ne pas tout simplement ajouter ce point lors de l'écriture du fichier ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    X = {'123' '456' '789'};
    
    for n = 1:3
       fprintf('%s. ',X{n});
    end
    fprintf('\n');

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 76
    Points : 58
    Points
    58
    Par défaut
    Merci à tous, en particulier à Dut!

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/08/2011, 18h23
  2. Réponses: 3
    Dernier message: 07/04/2011, 14h38
  3. Réponses: 6
    Dernier message: 13/11/2009, 16h06
  4. Réponses: 0
    Dernier message: 07/06/2009, 12h31
  5. Changer un caractère dans une chaîne contenue dans une phrase
    Par cirtey dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 07/03/2007, 16h16

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