找到每小时测量的时间序列的相关性

时间:2012-07-11 16:19:03

标签: matlab correlation

我有以下示例:

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)));

1 个答案:

答案 0 :(得分: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