일부 시적 사용권과 함께 %s %u %u %u %u %u %u %u %u %u %u %u
문자열이있는 textscan을 사용하여 파일을 읽는 것처럼 보입니다.
date time, P01,P02, P03, P04, P05, P06, P07, P08, P09, P10, P11
8/16/2009 0:00,51,45,46,54,53,52,524,5,399,89,78
8/16/2009 0:01,11,73,65,67,10,32,100,64,167,87,48
8/16/2009 0:02,20,58,89,15,30,67,113,76,409,55,26
8/16/2009 0:03,89,33,33,58,90,61,545,51,88,23,34
8/16/2009 0:04,33,9,92,43,86,97,345,20,369,38,29
8/16/2009 0:06,24,86,74,38,38,90,16,48,197,34,75
8/16/2009 0:07,59,86,67,30,7,54,135,8,231,66,19
8/16/2009 0:08,47,11,74,30,30,60,302,49,200,59,40
8/16/2009 0:09,76,50,66,48,92,2,598,83,336,26,34
8/16/2009 0:10,97,12,38,62,54,63,437,32,480,85,53
8/16/2009 0:11,30,78,6,98,98,21,375,50,72,87,15
8/16/2009 0:12,3,63,2,30,14,7,436,100,406,9,55
8/16/2009 0:13,43,19,32,8,31,20,426,29,296,97,50
8/16/2009 0:16,83,1,75,66,43,43,356,40,496,86,68
8/16/2009 0:17,24,69,67,40,81,23,526,36,104,73,10
8/16/2009 0:18,47,28,37,97,31,19,546,73,381,87,8
8/16/2009 0:19,73,38,92,81,21,63,227,50,463,91,74
8/16/2009 0:20,20,56,12,76,79,67,358,47,234,89,57
당신이 가지고있는이 비슷하다 나는 상황을 모방하려는 시도에 어떤 임의의 int를 가진 파일을 만들었어요? 전체 행 (0:05, 0:14, 0:15)이 누락 되었습니까? 그런 다음 데이터가 누락 된 행을 0으로 채우고 싶습니까?이 솔루션에
date time, P01,P02, P03, P04, P05, P06, P07, P08, P09, P10, P11
8/16/2009 0:00,51,45,46,54,53,52,524,5,399,89,78
8/16/2009 0:01,11,73,65,67,10,32,100,64,167,87,48
8/16/2009 0:02,20,58,89,15,30,67,113,76,409,55,26
8/16/2009 0:03,89,33,33,58,90,61,545,51,88,23,34
8/16/2009 0:04,33,9,92,43,86,97,345,20,369,38,29
0,0,0,0,0,0,0,0,0,0,0,0
8/16/2009 0:06,24,86,74,38,38,90,16,48,197,34,75
8/16/2009 0:07,59,86,67,30,7,54,135,8,231,66,19
8/16/2009 0:08,47,11,74,30,30,60,302,49,200,59,40
8/16/2009 0:09,76,50,66,48,92,2,598,83,336,26,34
8/16/2009 0:10,97,12,38,62,54,63,437,32,480,85,53
8/16/2009 0:11,30,78,6,98,98,21,375,50,72,87,15
8/16/2009 0:12,3,63,2,30,14,7,436,100,406,9,55
8/16/2009 0:13,43,19,32,8,31,20,426,29,296,97,50
0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0
8/16/2009 0:16,83,1,75,66,43,43,356,40,496,86,68
8/16/2009 0:17,24,69,67,40,81,23,526,36,104,73,10
8/16/2009 0:18,47,28,37,97,31,19,546,73,381,87,8
8/16/2009 0:19,73,38,92,81,21,63,227,50,463,91,74
8/16/2009 0:20,20,56,12,76,79,67,358,47,234,89,57
내 가정은 파일이 당신에게 항상 정적 크기 (예 : 144) 될 수 없습니다 파일을 허용 할 때마다 단계의 차이의 합해야한다는 것입니다. 나는 벡터에 시간을 꺼내 데이터 매트릭스가 아닌 셀의 나머지 부분을 만들었지 만, 당신이 셀 솔루션을 해결하기 쉬울 것 볼 수 있듯이했습니다
fid = fopen('data2.csv', 'rt');
data = textscan(fid, ['%s' repmat('%u',1,11)], 'HeaderLines', 1, 'Delimiter', ',');
fclose(fid);
%//Make time a datenum of the first column
time = datenum(data{1}, 'mm/dd/yyyy HH:MM');
%//Find the difference in minutes from each row
timeDiff = round(diff(datenum(time))*24*60);
%//the rest of the data
data = cell2mat(data(2:12));
for i=1:length(timeDiff)
if timeDiff(i) > 1
%//there's are missing rows, make a gap
data = [data(1:i,:); repmat(0,timeDiff(i)-1,11);data(i+1:end,:)];
end
end
그리고 마지막으로, 출력 :
data =
51 45 46 54 53 52 524 5 399 89 78
11 73 65 67 10 32 100 64 167 87 48
20 58 89 15 30 67 113 76 409 55 26
89 33 33 58 90 61 545 51 88 23 34
33 9 92 43 86 97 345 20 369 38 29
0 0 0 0 0 0 0 0 0 0 0
24 86 74 38 38 90 16 48 197 34 75
59 86 67 30 7 54 135 8 231 66 19
47 11 74 30 30 60 302 49 200 59 40
76 50 66 48 92 2 598 83 336 26 34
97 12 38 62 54 63 437 32 480 85 53
30 78 6 98 98 21 375 50 72 87 15
3 63 2 30 14 7 436 100 406 9 55
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
43 19 32 8 31 20 426 29 296 97 50
83 1 75 66 43 43 356 40 496 86 68
24 69 67 40 81 23 526 36 104 73 10
47 28 37 97 31 19 546 73 381 87 8
73 38 92 81 21 63 227 50 463 91 74
20 56 12 76 79 67 358 47 234 89 57
나는 당신이 여기있는 것을 100 % 확신하지 못합니다. data2.csv에서 어떻게 읽으십니까? 셀에 데이터가 있거나 벡터로 데이터를 분리 했습니까? 데이트 스탬프가 누락되었습니다. 그렇다면 벡터에 NaN 값이있는 것입니까? 문제를 조금 더 명확히 할 수 있다면 솔루션을 제공 할 수 있어야합니다. – Geodesic
나는 데이터를 .csv 형식으로 가지고 있으므로 ','구분 기호로 texscan을 사용하고 있습니다. (하지만 더 쉽게 파일을 .xls 파일에 저장할 수도 있습니다.) 일부 파일의 크기는 140 X 27 또는 139 X 27 ect ....입니다. 따라서 파일의 길이는 날짜에 따라 다릅니다. 스탬프가 누락되었습니다. 하루에 24 X6 (10 분) 파일이 있어야합니다. 지금 알려 주시기 바랍니다. 감사합니다. – Paul