5

I have a file with a data value and timestamp that I am trying to split in Matlab. This is the format:

-18.151346    Mon Jan 28 11:33:08 2013

I am using the textscan function to try and split it.

data=textscan(fid,'%f%s%s%f%s%n','delimiter','space');

I am trying to split the timestamp into separate columns so that I can just use the time and not the date or year. I had a look at some previous questions which were very similar but for some reason I just can't get it to do what I want. My resulting cell array is in this format.

Column 1     Column 2   Column 3 
-18.151346   Mon       Jan 28 11:33:08 2013

I am completely new to Matlab so any help would be greatly appreciated. Thanks in advance.

4

2 に答える 2

1
  1. 'space'区切り文字として文字列を使用していますが、これは では違法ですtextscan' '代わりに指定してください。
  2. 連続するスペースを 1 つとして扱いたいので、'MultipleDelimsAsOne'フラグも 1 に設定する必要があります。

正しい構文は次のとおりです。

textscan( fid, '%f%s%s%s%s%n', 'delimiter', ' ', 'MultipleDelimsAsOne', 1);

delimiter オプションをいじろうとしなければ、この動作はデフォルトで適切に行われていたので、すべてのオプションを省略してください:

textscan( fid, '%f%s%s%s%s%n');

また、スペースで囲まれた文字列内の各項目にフラグが必要なことにも注意してください。つまり、次のような文字列の場合:

-18.151346 月 1 月 28 日 11:33:08 2013

文字列形式のタイムスタンプは、結果のセル配列の 5 列目に格納されます。

于 2013-01-28T14:57:23.717 に答える
0

タイムスタンプを読み取るには、 を使用しますregexp

私がアドバイスするソリューションは最適化できますが、少なくとも最初の試みとしては役立ちます。

A = regexp(str,'[^\s]+','match');

このようにして、文字列内のすべての正規表現に一致します。次に、要素 1 と 5 として格納されているvaluesことがわかります。time

私は短いテストをしました:

cell = {'-18.151346 Mon Jan 28 11:33:08 2013','19.33333 Tue Feb 29 10:12:23 2012'};

これにより、セルが表示されA{1,2}ます。

繰り返しますが、この手順は完璧ですが、ヒントとして使用できます。

于 2013-01-28T14:58:02.783 に答える