Tracer des données sur le temps (date) de l'axe dans matlab
J'ai des données comme ceci:
22.10.1980. 100
25.10.1980. 120
26.10.1980. 12
(ce n'est que beaucoup plus d'elle, et, pour chaque jour, plusieurs mesures indépendantes sur la droite).
Maintenant, c'est sans doute bête, mais je n'ai jamais fait quelque chose comme ça dans matlab, et je suis de la difficulté à trouver des exemples similaires en ligne. J'ai besoin de tracer les données sur un temps/les dates de projection de l'axe (l'axe x), avec toutes les dates à l'intérieur (donc 23. et 24. ainsi ... à laquelle je n'ai pas de mesures).
Je ne suis pas demander à quelqu'un pour résoudre cela pour moi, mais si vous pouviez le soupçon qui devrait être la meilleure à prendre. N'ayant jamais utilisé ce genre de type de données, donc vais avoir du mal à trouver un moyen de chargement de dates pour les débutants.
Vous devez vous connecter pour publier un commentaire.
Il semble que cela pourrait être la meilleure à utiliser datetick.
En supposant que votre fichier de données au format indiqué ci-dessus, vous pouvez utiliser TEXTSCAN pour lire les données:
La première cellule de
C
contiendra un N-par-3 cellules de tableau de chaînes de caractères (les parties de la date), et la deuxième cellule deC
contiendra un N-en-1 vecteur de la mesure des données. Vous pouvez créer une date pour chaque numéro de la mesure en première concaténant les 3 petites chaînes de caractères dans une chaîne de date, puis à l'aide de la DATENUM fonction:Une fois que vous avez un vecteur de nombres de date
t
pour aller avec votre vecteur de mesuresdata
, vous pouvez ensuite les imprimer:Maintenant, vous pouvez modifier l'axe des x étiquettes pour afficher les dates. Une option est d'utiliser la fonction DATETICK, facile et élégant solution donnée dans steven réponse. Une autre option est d'utiliser la fonction DATESTR pour créer les étiquettes vous-même, puis modifier la XTick et XTickLabel propriétés de l'actuel axes:
REMARQUE: Quelle que soit l'option que vous choisissez pour changer l'axe des x étiquettes à jour des chaînes, vous risquez de rencontrer des problèmes avec les étiquettes qui se chevauchent les uns les autres, si les graduations sont trop rapprochés. Vous pouvez résoudre ce problème en réduisant ou en repositionnement des marques de graduation sur l'axe des x (en changeant le XTick de propriété) ou en ajustant les axes FontSize de la propriété. Si vous voulais faire pivoter les étiquettes afin de les faire correspondre, vous devez effacer les étiquettes et de créer de nouvelles tourné les objets texte pour eux. La suite de la présentation sur The MathWorks D'Échange De Fichiers est juste que:
Avec datenum vous pouvez convertir n'importe quelle chaîne de caractères date en format numérique basé sur le format de la date symboles (voir l'aide datestr).
Par exemple tout cela conduit à la même date numérique de la représentation:
datenum('15/05/2009 21:22','dd/mm/yyyy HH:MM');
datenum('15.05.2009 21:22','dd.mm.yyyy HH:MM');
datenum('21-22 15.05.2009','HH-MM dd.mm.yyyy');
datenum('21-22 05/15.2009','HH-MM mm/dd.yyyy');
...
La bonne chose est que vous pouvez passer à la cellule de tableau (la sortie de textscan) ou char tableau directement à datenum et il sera de sortie numérique de la date de tableau.
Datetick est une bonne option, ainsi que datetick2, qui peut être trouvé ici: MATLAB Central
Datetick2 permet de panoramique et de zoom, avec des ajustements à la fois des étiquettes, en fonction de combien vous êtes un zoom avant.
Je ne suis pas sûr au sujet du dd.mm.format aaaa - vous pouvez utiliser regexp ou strrep pour modifier le nombre de décimales pour les tirets si nécessaire.
Vous pouvez utiliser datenum pour convertir les dates en chiffres, et de tracer les données comme d'habitude. disons que vous mettez vos dates vecteur de la variable x.
Maintenant, vous pouvez utiliser
pour définir les graduations sur l'axe des x.