2012-03-10 10 views
0

私は温度のベクトルと日付/時間のセル配列を持っています。私は4つの変数を作成して、それぞれの変数がその日の異なるステージを表すようにします。たとえば、09:00〜15:00,15:00〜21:00,21:00〜03:00、03:00〜09:00の間に記録されたすべての温度の変数を作成する必要があります年。時間ベクトルから情報を取得する

温度を1時間に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); 

また、日付番号の代わりに日付ベクトルを使用することもできます。文字列を使った作業はかなり遅くなり、実際にはあまり価値がありません。

関連する問題