2017-08-11 2 views
1

J'ai donc ce code,Matlab exportation chaîne_date dans le fichier txt

%% 
%Changing from the unix epoch time to standard DDMMYY format 
%Importing the data 
unix_time = [1435763099;1435763109;1435763119;1435763129]; %time of the plot 

%Conversion of the epoch data 
time = datestr(719529+unix_time/86400,'dd/mmm/yyyy HH:MM:SS'); 

Je voudrais exporter le « temps » dans un fichier txt ou Excel mais je ne peux pas trouver un moyen de le faire sans entraîner de mauvais fichier txt.

fid = fopen('time.txt','wt'); 
fprintf(fid, time) 
fclose(fid); 

J'ai essayé cette méthode, mais il ne semble pas me donner le bon résultat que je cherche ce qui est que je veux que les résultats soient le unix_time converti en jj/mmm/aaaa HH: MM : Format SS et l'exporter dans un fichier texte de colonne.

Je wan't le résultat pour l'afficher dans un fichier texte

01/Jul/2015 15:04:59, 
01/Jul/2015 15:05:09, 
01/Jul/2015 15:05:19, 
01/Jul/2015 15:05:29, 
+0

Avez-vous besoin des comas à la fin de chaque ligne? –

Répondre

2

Je pense que dans ce cas, de son mieux pour utiliser une fonction différente de celle fprintf.

dlmwrite fera le travail très bien si elle est utilisée comme suit:

dlmwrite('time.txt',time,'delimiter',''); 

Cependant, cela ne sera pas ajouter les comas à la fin de chaque ligne. Si vous voulez les comas, vous pouvez simplement les ajouter à la variable time en utilisant l'indexation matricielle, avant de l'écrire dans le fichier.

time(:,end+1):','; 
+1

Merci beaucoup pour votre aide, ça marche! génial! Cependant, l'objectif final était de l'utiliser comme un axe x pour le tracé et il semble que j'obtiens une erreur. Y a-t-il un moyen de résoudre cela? –

+0

Est-il possible de remplacer les données d'origine par cet état nouvellement converti? –

+0

@SajinGurung Cela semble être une question complètement différente! Pensez à en demander un nouveau. –

2

La raison pour laquelle l'appel fprintf ci-dessus ne se comporte pas comme on le souhaite est parce que fprintf (et, plus généralement, Matlab) est colonne principale, qui est la raison pour laquelle vous obtenez 00001111....

Ceci est un bien cas d'utilisation pour la classe new-ish string de MATLAB, introduite dans R2016b. string tableaux sont pris en charge nativement par fprintf et sont imprimées de la façon prévue:

unix_time = [1435763099;1435763109;1435763119;1435763129]; 
time = string(datestr(719529+unix_time/86400,'dd/mmm/yyyy HH:MM:SS')); 

fid = fopen('time.txt','wt'); 
fprintf(fid, '%s,\n', time); 
fclose(fid); 

qui imprime:

01/Jul/2015 15:04:59, 
01/Jul/2015 15:05:09, 
01/Jul/2015 15:05:19, 
01/Jul/2015 15:05:29, 

Si vous utilisez une ancienne version de Matlab sans soutien à la string classe, vous pouvez faire quelques réglages mineurs afin d'obtenir fprintf de coopérer. La première inclinaison lors de l'exécution dans la colonne majeure de fprintf est transpose les données, ce qui devrait nous arriver où nous voulons, non?

unix_time = [1435763099;1435763109;1435763119;1435763129]; 
time = datestr(719529+unix_time/86400,'dd/mmm/yyyy HH:MM:SS'); 
fprintf('%s,\n', time.') 

Ce qui nous donne:

01/Jul/2015 15:04:5901/Jul/2015 15:05:0901/Jul/2015 15:05:1901/Jul/2015 15:05:29, 

Whoops. Cela nous a techniquement donné ce que nous voulions, mais cela ne fait qu'une seule rangée. Pour contourner ce problème, nous pouvons ajouter un caractère de nouvelle ligne, \n et notre virgule à la fin de chaque ligne avant de transposer:

unix_time = [1435763099;1435763109;1435763119;1435763129]; 
time = datestr(719529+unix_time/86400,'dd/mmm/yyyy HH:MM:SS'); 
fprintf('%s', horzcat(time, repmat(sprintf(',\n'), size(time, 1), 1)).'); 

qui imprime:

01/Jul/2015 15:04:59, 
01/Jul/2015 15:05:09, 
01/Jul/2015 15:05:19, 
01/Jul/2015 15:05:29, 

Yay!

+0

Génial! Merci! Cependant, l'objectif final était d'utiliser les valeurs converties comme un axe des x pour un graphe de graphique que j'ai oublié de mentionner auparavant. Y a-t-il un moyen d'implémenter ce résultat dans un graphique? –

+0

@SajinGurung si vous voulez l'utiliser comme un axe des x pourquoi l'écrivez-vous dans un fichier? Cela semble être une question complètement indépendante. – excaza