2017-12-06 9 views
0

Excelシートを読み込もうとしています。 同じコンピュータ上で、私は異なる結果を持っています。文字列ではなく、Date-timeをDateと読むにはどうすればよいですか?Xlsreadが(文字列として)日付を読み取る理由

私は後で変更できることを知っていますが、OctaveとMatlabのコードは同じである必要があります。

Matlabの:

[data,header, raw]=xlsread('Mappe1.xlsx'); 

data = 

     0 -0.1843 -0.1445 
     0 -0.1845 -0.1455 
     0 -0.1833 -0.1461 
     0 -0.1819 -0.1466 

header = 

    'Stamp'     'R1.1' 'R2.1' 'R2.2' 
    '24.11.2017 09:41:25' ''  ''  ''  
    '24.11.2017 05:41:23' ''  ''  ''  
    '24.11.2017 01:41:21' ''  ''  ''  
    '23.11.2017 21:41:19' ''  ''  ''  


Octave: 
data = 

    4.3063e+004 0.0000e+000 -1.8434e-001 -1.4451e-001 
    4.3063e+004 0.0000e+000 -1.8445e-001 -1.4551e-001 
    4.3063e+004 0.0000e+000 -1.8328e-001 -1.4611e-001 
    4.3063e+004 0.0000e+000 -1.8186e-001 -1.4661e-001 
    4.3063e+004 0.0000e+000 -1.8071e-001 -1.4493e-001 
    4.3063e+004 0.0000e+000 -1.8192e-001 -1.4123e-001 
    4.3062e+004 0.0000e+000 -1.8348e-001 -1.4165e-001 
    4.3062e+004 0.0000e+000 -1.8358e-001 -1.4219e-001 
    4.3062e+004 0.0000e+000 -1.8342e-001 -1.4284e-001 

header = 
{ 
    [1,1] = Stamp 
    [1,2] = R1.1 
    [1,3] = R2.1 
    [1,4] = R2.2 
} 
+0

数値として保存するために有効な形式ではないため、文字列として保存しています。持っている:または。数字の間にこれが原因です。 MATLABはこれを行列以外の文字列として行列やセル配列に格納することはできません。 – Eppicurt

答えて

2

Excelデータを日付としてExcelで書式設定されていることを確認した後、 "基本" モードを使用してMATLABからロード:

[data,header,raw]=xlsread('Mappe1.xlsx','','','basic'); 

まず、あなたが上記の示したデータを提供します日付形式は24.11.2017 09:41:25です。ドット区切り文字は標準的なものではないので、Excelにどのように格納されているのか不思議です。私は2017-11-24 09:41:25のような標準形式を使用し、Excelがそれらを日付/時刻として認識するようにします。 (MATLABが好きなフォーマットについては、hereを参照してください)。

上記を実行することで、MATLABで要求された数値と同じに見える数値を読み取ることができました。基本モードを使用すると、hereと記載されているExcelシリアル番号(MATLABデータではない)として日付に読み込まれます。

"基本"モードを使用しない場合、MATLABの動作はコンピュータにインストールされているExcelのバージョン(わからない)によって異なります。この場合、Octaveの仕組みはわかりません。

最後に、MATLABとOctaveの両方で動作するコードを作成することは、単純な場合(またはまったくない場合)では不可能かもしれません。これを実現させるためには、フープを飛び越えるように準備する必要があります。また、私はテストするためにOctaveを持っていないので、これがOctaveで同じように動作すると主張していません!

関連する問題