セル構造に日付を含むマトリックスがあります。datenum()を使用して日付(2列目)を変換できましたが、時刻(3列目)を追加する方法がわかりません
データは次のようになります。
'IBM' 20090602 0 108.410000000000
'IBM' 20090602 500 108.560000000000
私のコード:
date = datenum(num2str(IBM(:,2)),'yyyymmdd')
セル構造に日付を含むマトリックスがあります。datenum()を使用して日付(2列目)を変換できましたが、時刻(3列目)を追加する方法がわかりません
データは次のようになります。
'IBM' 20090602 0 108.410000000000
'IBM' 20090602 500 108.560000000000
私のコード:
date = datenum(num2str(IBM(:,2)),'yyyymmdd')
最初に間違いを確認しましょう。
datenum
文字列を使用してフィードします。'IBM(:, 2)'
引用符を破棄します。datenum
数値ではなく文字列を受け入れます。考えられる解決策は、データの2番目の列を文字列の配列に変換し、次のdatenum
ようににフィードすることです。
d = datenum(num2str(vertcat(IBM{:, 2})), 'yyyymmdd');
もちろん、これは、日付文字列の形式が各行で固定されている場合にのみ可能であることに注意してください。
編集:
3番目の列の値をの結果に追加するにdatenum
は、次のようにします。
d + vertcat(IBM{:, 3})
d
から取得した日付値の列ベクトルはどこにありますdatenum
か(3番目の列でtimje値の実際の意味を指定していないため、基本的な加算を実行したいと思います)。
一行で、完全な答えは次のようになります。
datenum(num2str(vertcat(IBM{:, 2})), 'yyyymmdd') + vertcat(IBM{:, 3})
datenumに変換するときに、時間値を直接追加できます。私が想定していた分(秒単位の場合は、除数に別の* 60を追加)から日数に変換するだけです。これは、MATLABがdatenumの計算に使用するものです。
timestamps = cellfun(@(x,y) datenum(num2str(x),'yyyymmdd')+y/(24*60),...
IBM(:,2),...
IBM(:,3),...
'UniformOutput',false)