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 :

Convertir cell en tableau numérique


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Avril 2010
    Messages : 49
    Par défaut Convertir cell en tableau numérique
    Bonjour,

    J'ai un petit soucis pour faire une simple soustraction de tableau (voir dernière ligne du code).

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    cmpt=1;
    for j=30:200
         for k=1:4
             freq = num2str(j);
             pos = num2str(k);
             fid=fopen(strcat('C:\Documents and Settings\th\Bureau\Optimisation ANE\exportation optimisation\Freq PAS10MHzVT00',pos,'FR',freq,'-S.sfc'));
                    if (fid>1)
                        tableau = textscan (fid, '%s %s %*s','headerlines',7);
                        P(:,cmpt)=tableau{1};
                        P(:,cmpt+1)=tableau{2};
                        cmpt=cmpt+2;
                    end
          end
    end
     
    DAF=xlsread('C:\Documents and Settings\th\Bureau\Optimisation ANE\ANE R10 V1','C','A7:D208');
    taille_DAF = size (DAF);
     
    % Calcul de V0 %
     
        for ligne=1:taille_DAF(1)
            V0(ligne)=(DAF (ligne,4))-7;
            V0=V0';
        end
     
    % Calcul de la deviation d'ANE %
     
    taille = size (P);
    for ligne=1:taille(1)
        P1(ligne)=P(ligne,2);
        P1=P1';
        DAF1(ligne)=DAF(ligne,2);
        DAF1=DAF1';
        V01(ligne)=V0(ligne,1);
        V01=V01';
    end
    dev=V01-DAF1-P1;
    Il m'affiche l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ??? Undefined function or method 'minus' for input arguments of type 'cell'.
     
    Error in ==> Optimisation_offset at 37
    dev=V01-DAF1-P1;
    Du coup je pense qu'il faut que je convertisse "P" qui est en cell, en tableau numérique. Mais je n'y arrive pas.

    Merci d'avance pour votre aide

  2. #2
    Membre actif
    Inscrit en
    Novembre 2009
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 94
    Par défaut
    Bonjour,

    peut-être que tu peux utiliser la fonction cell2mat, laquelle permet de convertir en un tableau de "numeric" un tableau de "cell" dont chaque cellule contient un "numeric".

    ici, tu pourrais inclure dan ta boucle for:
    p1=cell2mat(p1);

    non?

    cordialement

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Avril 2010
    Messages : 49
    Par défaut
    Merci pour ta réponse oodbae_adriano !

    Tu avais une partie de la solution
    après plusieurs (de nombreux en fait) essais j'ai réussi à faire ce que je voulais avec sa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    taille = size (P);
    for ligne=1:taille(1)
        P1(ligne)=P(ligne,2);
        P2=cell2mat(P1);
        P2=str2mat(P1);
        P2=str2num(P2);
        DAF1(ligne)=DAF(ligne,3);
        DAF1=DAF1';
        V01(ligne)=V0(ligne,1);
        V01=V01';
    end
    Ce n'est peut être pas le plus simple ni la plus belle façon de faire mais sa marche

    Merci de m'avoir aidé

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 63
    Par défaut
    La ligne: P2=cell2mat(P1); ne sert à rien dans ton code.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Avril 2010
    Messages : 49
    Par défaut
    ...en effet

    Merci !

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 63
    Par défaut
    Sinon une alternative pour la conversion d'une matrice type cell (c) en simple matrice numerique (P):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    S = size(c);
    P = zeros(S(1), S(2));
    for i = 1 : S(1)
        for j = 1 : S(2)
            P(i, j) = str2num(c{i, j});
        end
    end

Discussions similaires

  1. convertir String en tableau d'entier
    Par alouha dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 18/06/2008, 22h43
  2. convertir string en tableau de byte
    Par wolfazer dans le forum VB.NET
    Réponses: 3
    Dernier message: 29/10/2007, 09h15
  3. [PHP-JS] Convertir du texte en numérique
    Par fantazya_z dans le forum Langage
    Réponses: 15
    Dernier message: 03/09/2007, 00h39
  4. convertir string en tableau
    Par jfc dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/06/2007, 12h36
  5. [PL / SQL] Convertir chaine en tableau de char
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 3
    Dernier message: 06/02/2006, 11h29

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