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 :

conversion date à partir de cell [Débutant]


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 12
    Points : 8
    Points
    8
    Par défaut conversion date à partir de cell
    bonjour le forum,

    J'ai un fichier excel avec tout plein de colonnes avec des mots, des dates et des nombres.

    'T1' '28/02/2010 03:30:00' '442000' '7.43'
    T1 '28/02/2010 03:40:00' '1273000' '10.95'
    T1 '28/02/2010 04:10:00' '1981000' '14.02'

    Pour pouvoir traiter le fichier d'un coup j'ai tout mis au format 'cell' :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [num, txt]=xlsread(nom); 
    tmp=[txt(2:length(txt(:,1)),1:3) num2cell(num(:,:))]
    Maintenant j'aimerais trier les lignes dans l'ordre chronologique à partir de la date figurant dans la 2eme colonne, avec sortrows je pense. Si j'applique sortrows directement le tri ne se fait pas bien car il ne prend en compte que le jour (28 ou 29) mais pas le reste. Je pensais donc rapporter mon format date à un format nombre de matlab grace à datenum, faire mon tri, puis repasser en format dd/mm/yyyy HH:MM:SS.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    tmp(:,2)=datenum (tmp(:,2),'dd/mm/yyyy HH:MM:SS')
    tmp=sortrows(tmp,2)
    tmp(:,2)=datestr (tmp(:,2),'dd/mm/yyyy HH:MM:SS')
    Cependant j'ai le message suivant :

    ??? Conversion to cell from double is not possible.
    tmp(:,2)=datenum (tmp(:,2),'dd/mm/yyyy HH:MM:SS')
    Voyez vous un moyen de réaliser ce tri, même si c'est en utilisant une autre méthode. Au passage vous pouvez corriger mon code ou l'améliorer car c'est codé comme un débutant et il se pourrait bien que tout mon problème ne soit du qu'à une pitite erreur de codage

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Points : 4 039
    Points
    4 039
    Par défaut
    Remplace la variable à gauche du égal (qui est ta cellule tmp) par un autre nom .

    Par exemple remplace

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tmp(:,2)=datenum (tmp(:,2),'dd/mm/yyyy HH:MM:SS')
    par xx:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xx = datenum (tmp(:,2),'dd/mm/yyyy HH:MM:SS')
    MATLAB 8.2 (R2013b)

    le blog des MATLAB geeks

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    re, merci Tug mais j'ai finalement résolu mon problème. Il y avait en fait une multitude de problèmes sous-jacents mais le premier que j'indiquais ici s'est résolu avec une boucle for et l'utilisation de num2cell ou, autre solution, des {}:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for i=1:a-1
        tmp(i,5)=num2cell(datenum (tmp{i,5},'dd/mm/yyyy HH:MM:SS'));
    end
     
    tmp=sortrows(tmp,5);
     
    for i =1:a-1
        tmp{i,5}=datestr (tmp{i,5},'dd/mm/yyyy HH:MM:SS');
    end
    Je viens de faire de sacrés progrès en matlab >.<

    Encore merci pour ta suggestion, du coup je me demandais si c'est mieux de passer par une variable intermédiaire et l'intérêt ?

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

Discussions similaires

  1. [Date]Date sous Java != celle sous Access
    Par Cyborg289 dans le forum JDBC
    Réponses: 4
    Dernier message: 27/07/2005, 23h11
  2. Conversion date ->heures
    Par bdkiller dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 02/09/2004, 16h08
  3. [CONVERSION] DATE
    Par Mister_FX dans le forum ASP
    Réponses: 3
    Dernier message: 05/07/2004, 10h07
  4. Problème conversion date
    Par mat.M dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/03/2004, 15h05
  5. Conversion Date
    Par ZuZu dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 09/10/2003, 16h02

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