0

セル構造に日付を含むマトリックスがあります。datenum()を使用して日付(2列目)を変換できましたが、時刻(3列目)を追加する方法がわかりません

データは次のようになります。

  'IBM' 20090602    0   108.410000000000
  'IBM' 20090602    500 108.560000000000

私のコード:

date = datenum(num2str(IBM(:,2)),'yyyymmdd')
4

2 に答える 2

1

最初に間違いを確認しましょう。

  1. 実際の配列の代わりにdatenum文字列を使用してフィードします。'IBM(:, 2)'引用符を破棄します。
  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})
于 2013-02-26T15:33:45.280 に答える
0

datenumに変換するときに、時間値を直接追加できます。私が想定していた分(秒単位の場合は、除数に別の* 60を追加)から日数に変換するだけです。これは、MATLABがdatenumの計算に使用するものです。

timestamps = cellfun(@(x,y) datenum(num2str(x),'yyyymmdd')+y/(24*60),...
IBM(:,2),...
IBM(:,3),...
'UniformOutput',false)
于 2013-02-26T16:19:35.733 に答える