2012-07-11 52 views
0

我有以下示例:找到時間序列每小時測量的相關性

DateTime=datestr(datenum('2011-01-01 00:00','yyyy-mm-dd HH:MM'):1/24:... 
    datenum('2011-12-31 23:00','yyyy-mm-dd HH:MM'),... 
    'yyyy-mm-dd HH:MM'); 
Data = [datenum(DateTime) - datenum(2011,0,0),rand(13,length(DateTime(:,1)))']; 

此數據包含一年中的天在第一列中,在塔水溫度(2:端-1)和最後一列的空氣溫度。我想計算空氣溫度(最後一列)和每列溫度之間的相關性。我可以做到這一點如下:

R = arrayfun(@(i)nonzeros(tril(corrcoef(Data(:,i),Data(:,end)),-1)),2:size(Data,2)-1,'un',0); 

接着,我試圖以產生用於每個單獨的天(即,每個24行)的相關值的矩陣。所以我的問題是如何計算每列溫度與空氣溫度之間的相關性,如上所示,但每個獨立日由'數據(:,i)'表示。結果應當包括365行(天)和12列(下)

另外,我能找到的每一天的行號:

[a,b,b] = unique(floor(Data(:,1))); 

回答

2

嘗試以下操作:

dayIdx = floor(Data(:,1)); 
R = zeros(365,12); 
for i=1:365 
    c = corrcoef(Data(dayIdx==i,:)); %# corr between all variables for one day 
    R(i,:) = c(end,2:end-1); %# extract those between water temps and air temp 
end