0

一連のファイルで解析しているデータがいくつかあります。ファイルには、いくつかのデータポイントの年、月、日、時、分、および秒の境界が含まれています。

ストリームの例を次に示します。

> 2010/01/01,00:00:00.979131, 27.4485,  51.9362, 14.8,  6
> 2010/01/01,00:00:01.021977, 27.5149,  51.9375, 16.0,  6
> 2010/01/01,00:00:01.074032, 27.4797,  51.9446, 14.5, 10
> 2010/01/01,00:00:01.663689, 25.8441,-152.8141, 14.6,  6

これまでのところ、秒を取得するためにこれを行うことができます:

raw = textscan(fid, '%d/%d/%d %d:%d:%f %f %f %f %d', 'delimiter', ',');
m = cellfun(@double, raw, 'UniformOutput', false); %convert to doubles
seconds = ((m{:,4} *  3600.0) + (m{:,5} * 60.0) + m{:,6});

年を捨てて、私が持っているものに加えて、月と日を含むいくつかの特別な魔法を使用して、年の日をフロートとして表す単調に増加する数を作成するにはどうすればよいですか?

4

1 に答える 1

2

datenumたとえば、次のように使用します。

 datenum(Y, M, D, H, MN, S)

Y、M、D、H、MN、およびS(年、月、日、時、分、および秒)配列値の対応する要素のシリアル日付番号を返します。datenumは、別の入力ではミリ秒を受け入れませんが、秒(DateString)入力の小数部分として受け入れます。入力Y、M、D、H、MN、およびSは、double型の同じサイズの配列である必要があります(または任意の配列をスカラーにすることができます)。入力引数を日付ベクトル[YMDHMNS]として指定することもできます。

于 2013-02-04T00:58:55.710 に答える