4

隔週で記録された年次気温測定値のデータセットがあります。データは次のようになります。

t = 1:14:365;
% GENERATE DATA
y = 1 + (30-1).*rand(1,length(t));
y1 = 20*sin(2*pi*t/max(t));        % Annual variation °C
y1(y1<0) = [];
tt = 365/14;
time = 1:tt:365;
plot(time,y1,'-o');

ここでは、年間の気温サイクルに明確に従います。

このことから、サイン関数 (日中の温度範囲を表す) をデータに追加できるかどうか疑問に思っていますか? たとえば、2 週間ごとのデータから、シリーズを補間して 8760 回の測定値、つまり 1 時間ごとの測定値を取得する場合、シリーズが信頼できるものであるためには、年間の気温サイクルに加えて、日周の気温サイクルによって特徴付けられる必要があります。さらに、日中の温度サイクルは、その時点での温度測定値の関数である必要があります。つまり、冬よりも夏の方が大きくなります。したがって、最初に線形補間を使用して 1 時間間隔を表すデータを取得してから、正弦関数を追加する方がよいでしょう。これをスクリプトに書き込む方法はありますか?または、これを正確に達成する方法について誰か意見がありますか?

4

2 に答える 2

5

最初に、次のようなものを使用してデータを補間できます (1 時間まで)。

x = 1:inv(24):365;
T_interp = interp1(t,y1,x,'spline');

interp1の Matlab ドキュメントを確認してください(例 2)

その上にサインを追加します。振幅 A の期間 1 (24 時間) の正弦波に続き、最小値は午前 3 時です。

T_diurn = -A*sin(2*pi*x+(3/24)*2*pi);

それで

T_total = T_diurn + T_interp;
于 2012-10-31T09:03:32.967 に答える
0

まず、見栄えの良いプロットが存在する中で最も誤解を招くものであることを知っていますか?14日ごとに収集されたデータを補間して、 1時間ごとに収集されたデータのように見えるようにすることは、ほとんどのサークルでは少なくとも悪い習慣と見なされます...

そうは言っても、補間を行うためにsを使用splineします。隔週および毎時から任意の他の組み合わせに変更する場合は、はるかに柔軟であり、さらに、年間の気温変化ははるかにスムーズになります。

方法は次のとおりです。

% Create spline through data
pp = spline(time, y1);


% define diurnal variation (this one is minimal at 4 AM)    
T_diurn = @(t) -A*cos(2*pi*(t-(4/24)));

% plot example 
t = 150 : 1/24 : 250;    
plot( t, ppval(pp,t)+T_diurn(t) , 'b')
于 2012-10-31T11:26:08.987 に答える