2017-12-06 13 views
0

Excel 시트를 읽으려고합니다. 동일한 컴퓨터에서 다른 결과가 나타납니다. 문자열이 아닌 날짜 - 시간을 날짜로 읽으려면 어떻게해야합니까?Xlsread가 문자열로 읽는 이유 (날짜 시간)

내가 나중에 변경할 수 있음을 알고 있지만 Octave와 Matlab에 동일한 코드가 있어야합니다.

matlab에 : 엑셀 데이터를 사용하여 MATLAB에서 날짜로 Excel에서 포맷 한 다음로드되어 있는지 확인

[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

"기본"모드 :

[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 데이터 제외)로 읽습니다.

"기본"모드를 사용하지 않으면 컴퓨터에 설치되어있는 Excel 버전에 따라 MATLAB 동작이 달라집니다 (모름). 이 경우 Octave가 어떻게 작동하는지 모르겠습니다.

마지막으로 MATLAB과 Octave 모두에서 작동하는 코드를 작성하는 것은 간단한 경우에는 가능하지 않을 수도 있습니다. 이런 일이 일어나도록 농구를 뛰어 넘을 준비가되어 있어야합니다. 또한 나는 테스트 할 Octave가 없기 때문에 이것이 Octave에서 똑같이 작동 할 것이라고 주장하지 않습니다!