2012-03-10 3 views
0

나는 온도 벡터와 날짜/시간의 셀 배열을 가지고있다. 각 변수가 하루 중 다른 단계를 나타내는 4 개의 변수를 만들고 싶습니다. 예를 들어 09 : 00 ~ 15 : 00, 15 : 00 ~ 21 : 00, 21 : 00 ~ 03 : 00 및 03 : 00 ~ 09 : 00에 전체적으로 기록 된 모든 온도에 대한 변수를 생성해야합니다. 년.시간 벡터에서 정보 얻기

온도가 1 년 동안 매시간 기록 된 경우 8760 개가 측정되었으므로 위에서 설명한 시간에 해당하는 개별 변수로 나누고 싶습니다.

clear all 
StartDate = '2011-01-01 00:00'; 
EndDate = '2011-12-31 23:57'; 
Resolution = 60; 
DateTime=datestr(datenum(StartDate,'yyyy-mm-dd HH:MM'):Resolution/(60*24):... 
    datenum(EndDate,'yyyy-mm-dd HH:MM'),'yyyy-mm-dd HH:MM'); 
DateTime=cellstr(DateTime); 
data = 1 + (20-1).*rand(8760,1); 

그래서 결국 나는 1 년 동안 매일 찍은 시간 사이의 온도를 갖는 변수를 갖게 될 것입니다.

은 현재 내가 datevec와 벡터에 날짜 시간 변환하고있어 다음 사용 :

P1{i}(not( 3 <= DateVector(:,4) & DateVector(:,4) < 9)) = nan; 

하루의 다른 시간을 지정할 수 있습니다. 이러한 작업을 수행하는 가장 좋은 방법입니까?

답변

0

실제로 디스플레이를 만들 때까지 가능한 한 오랫동안 시간 벡터를 간단한 숫자로 남겨 두었습니다.

그래서 나는 대체 할 것이다 :

DateTime=datestr(datenum(StartDate,'yyyy-mm-dd HH:MM'):Resolution/(60*24):... 
    datenum(EndDate,'yyyy-mm-dd HH:MM'),'yyyy-mm-dd HH:MM'); 
DateTime=cellstr(DateTime); 

으로 :

DateTime = (datenum(StartDate,'yyyy-mm-dd HH:MM'):Resolution/(60*24):datenum(EndDate,'yyyy-mm-dd HH:MM'); 

그리고 아마도 내가 시간을 미리 계산하는 것, 그리고

Time = mod(DateTime,1) 

으로 내 모든 측정을 찾을 수 특정 시간 :

%Between 12:00 and 15:00 
currentLimits = [12 15]/24; %Two times in units of days  
mask =Time >=currentLimits(1) & Time >=currentLimits(1); 
currentTemperatures = data(mask); 

날짜 번호 대신 날짜 벡터를 사용할 수도 있습니다. 문자열을 사용한 작업은 훨씬 느려지므로 많은 가치를 추가하지는 않습니다.