0

1. 日付が適切に解析されるように、このデータを適切に読み込むにはどうすればよいですか? ファイルから読み取った文字列を連結しようとしていますが、得られる出力が混同されています。出力はx軸です。また、x軸からの間隔には、必要な文字列ではなく数字があります。ファイルには、日付、時刻、温度、および値の 4 つの列があります。日付は「01.01.2013」、時刻は「09:08:02」

また、最初の列 (日付付き) のみを使用したい場合、どうすればよいですか? datenum(mydata{1}) を使用すると、「日付 01.01.2013 を解析できません」という結果になるためです。

...
mydata = textscan(fid, '%s %s %f %f', 'delimiter',';', 'HeaderLines',1);
date={};
temp={};
..
date{1}=datenum( strcat(mydata{1},{' '},mydata{2}) );
...

2. 軸の目盛りを修正するにはどうすればよいですか?

次に、plotyy を使用してデータをプロットしようとしており、x 軸を日付にしたいのですが、2 つの異なる軸ラベルを取得しています。

私が使用しているコードは次のとおりです。

temp = mydata{4};
plotyy(date,temp,date,2*temp);
datetick('x','mmm.dd,yyyy');

結果の画像は次のとおりです。

ここに画像の説明を入力

- - - - - - - -アップデート - - - - - - - - - - - - - - - - - -----

コードは次のとおりです。

fid = fopen('test2.txt','r');
mydata = textscan(fid, '%s %s %f %f', 'delimiter',';', 'HeaderLines',1);
fclose(fid);

date=datenum( strcat(mydata{1},{' '},mydata{2}),'mmm.dd,yyyy HH:MM:SS' );
temperature=mydata{3};
value=mydata{4};


[AX,H1,H2]=plotyy(date,temperature,date,value,'plot'); 
set(get(AX(1),'Ylabel'),'String','Temperatures');
set(get(AX(2),'Ylabel'),'String','Value');



set(H1,'LineStyle','--');
set(H2,'LineStyle',':');
datetick(AX(1),'x','mmm.dd,yyyy');


title('Temperatures - Values');
xlabel('Date')

とファイル

Date;Time;Temp;value
Jan.01,2013; 11:00:00;20;10                         
Feb.08,2013; 12:00:00;23;11
Mar.04,2013; 04:02:00;24;15
Apr.10,2013; 08:04:00;28;20
May.10,2013; 12:05:00;32;30
Jun.04,2013; 10:06:0;33;27
4

1 に答える 1

1

1. 入力の解析

フォーマット文字列 (formatIn) も含めていないため、「解析できません」というエラーが表示されます。datenumのドキュメントを参照してください。

最初の列のみを日付に変換する場合は、次のようになります。

date=datenum(mydata{1},'mm.dd.yyyy');

1 列目と 2 列目の両方を変換する場合は、次を試してください。

 date=datenum( strcat(mydata{1},{' '},mydata{2}),'mm.dd.yyyy HH:MM:SS');

これが私が実行しているコード全体で、うまくいくようです。私のデータファイルにはヘッダー行がないことに注意してください。

% data.txt
% 01.01,2013; 11:00:47;10;20
% 01.02,2013; 11:00:57;10;40

fid = fopen('data.txt');
mydata = textscan(fid, '%s %s %f %f', 'delimiter',';');
date=datenum( strcat(mydata{1},{' '},mydata{2}),'mm.dd,yyyy HH:MM:SS');

2. 正しいプロットの取得

plotyy コマンドには 2 つの異なる x-ticks があります。あなたがしたようにdatetickを設定することで、それらの1つだけを変更しています。代わりに、最初の x-tick を日付ティックに変更し、2 番目の x-tick を空に設定します。

temp = mydata{4};
[AX,H1,H2] = plotyy(date,temp,date,2*temp);
datetick(AX(1),'x','mmm.dd,yyyy');
set(AX(2),'XTick',[])
于 2013-03-31T22:12:38.693 に答える