필자는 한 줄씩 읽는 데이터 세트를 디스크에 가지고 있으며, 데이터 열 중 하나를 (해당 날짜의) 0-23.99999 범위의 float 벡터로 변환하고 싶습니다.Octave에서 textscan() 사용 ... 형식을 올바르게 지정하는 방법?
데이터는 다음과 같이 보입니다 :
2010/01/01,00:00:00.979131, 27.4485, 51.9362, 14.8, 6
2010/01/01,00:00:01.021977, 27.5149, 51.9375, 16.0, 6
2010/01/01,00:00:01.074032, 27.4797, 51.9446, 14.5, 10
2010/01/01,00:00:01.663689, 25.8441,-152.8141, 14.6, 6
2010/01/01,00:00:01.639541, 25.8744,-152.6122, 1.5, 5
2010/01/01,00:00:02.232099, -2.2447, 11.5023, 18.8, 6
2010/01/01,00:00:02.256351, -0.8135, 27.3139, 17.7, 5
2010/01/01,00:00:02.306734, -2.7797, 28.5109, 26.0, 5
2010/01/01,00:00:02.620765, 25.6656,-154.2029, 26.2, 9
2010/01/01,00:00:02.658495, 25.6698,-154.2157, 23.0, 6
2010/01/01,00:00:02.731266, -5.7106, 126.4517, 3.6, 5
2010/01/01,00:00:02.787495, -5.7138, 126.5210, 24.4, 8
2010/01/01,00:00:02.811636, -3.2453, 124.6919, 21.1, 8
2 열 (예 : 00 : 00 : 00.979131)은 관심 내가
setenv GNUTERM 'x11';
fid = fopen('myfile.txt', 'r');
m = textscan(fid, '%d%d%d%d/%d%d/%d%d, %d%d:%d%d:%d%f, %f, %f, %f, %d');
mx = m(:, 5); %here, I would expect to grab 14.8, 16.0, etc
my = m(:, 2)/24.0; %here, all data from timestamp column (00:00:00.979131, for ex)
plot(mx, my);
문제 같은 것을 할 싶습니다 textscan
에 전달한 문자열이 내 데이터에 대해 형식이 잘못되었습니다. 해당 숫자의 서식은 군사 시간대에 "시 : 분 : 초"입니다. vars mx
또는 my
에 대한 값을 액세스하거나 변환하려면 어떻게해야합니까? 작동하지만, 그것은 내가 여러 부분으로 원하는 시간 형식 VAR을두고,
m = textscan(fid, '%d/%d/%d %d:%d:%f %f %f %f %d', 'delimiter', ',');
... : 당신이 뭔가를 할 수있는 것처럼
감사합니다, JML
'csvread'는이 작업에 적합하지 않습니다. 'textscan' 시도 – carandraug
확인 코드와 질문을 업데이트했습니다. 내가 틀린 w/r/t textscan()의 입력은 무엇입니까? – jml
또한 '% d/% d/% d, % d : % d : % f, % f, % f, % f, % d'을 사용해 보았습니다. – jml