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:end-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)));
4

1 回答 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
于 2012-07-11T16:36:57.500 回答