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行ごと)の相関値の行列を生成しようとしています。だから私の質問は、上記のように温度の各列と気温との相関関係を計算する方法ですが、「Data(:、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 に答える