日時配列のx軸の値を使用してMATLABでプロットしようとしています。
1つの値の例: '2016-06-03T13:37:20.315Z'
最初に、値は構造体配列に保存され、そこから別の配列にコピーしようとします。私は次のコードでそれを行います:
timestamp=[];
for j=1:length(data)
timestamp = getfield(data,{j},'timestamp');
timestamp{j}=(datetime);
end
しかし、配列を見ると、すべての値が1つの日付であるように見えます。これは、「data」構造体配列にも含まれていません。
例:
timestamp{1} = '14-Dec-2018 00:31:05';
timestamp{10} = '14-Dec-2018 00:31:05';
timestamp{19} = '14-Dec-2018 00:31:05';
私の最初の考えは、おそらく入力フォーマットのせいであると思ったので、試してみました
timestamp{j}=(datetime(timestamp,'InputFormat','uuuu-MM-dd''T''HH:mmXXX','TimeZone','UTC'));
しかし、「datetimeの使用中にエラーが発生しました(行635)「2016-06-03T13:37:20.315Z」を「uuuu-MM-dd」T「HH:mmXXX」の形式を使用して日時に変換できません。」というメッセージが表示されました。
何か案は?
コードには多数のエラーがあります。それらは以下に要約されています。
問題の解決策
- getfield関数を使用して、ループを使用せずに、データ構造体からタイムスタンプchar配列に1行で完全にアクセスする必要があります。
-
- 最初にオフセットフィールド(TおよびZ)を日付文字配列から削除し、
-
- 最後に、プロットで使用する必要のある形式を使用して、編集した日時文字列を日時タイプに変換し直す必要があります。
手順を説明するコードを以下に示します。
% suppose we have a struct named data
% with a field known as timestamp holding the
% different datetime char arrays of particular
% TimeZone offsets
data.timestamp = {'2016-06-03T13:37:20.315Z', '2016-07-10T17:45:20.200Z', ...
'2016-07-09T13:37:21.305Z', '2016-11-10T01:30:20.320Z'};
% now getting the timestamp field elements in a variable using getfield()
% command
timestamp = getfield(data, 'timestamp')
% now removing each offsets chars(T and Z) from each datetime strings
edited_timestamp = strrep(timestamp, 'T', ' '); % removing T
edited_timestamp = strrep(edited_timestamp, 'Z', '') % removing Z
% finally, convert the edited_timestamp back to datetime type using the
% required format to use in plot
timestamp_datetime = datetime(edited_timestamp, 'Format', 'yyyy-MM-dd HH:mm:ss.SSS')
% ------------------------------------------------------
% now you can do the plotting here using timestamp_datetime
% ------------------------------------------------------
% e.g., plot(timestamp_datetime, [1:4])
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加