绘制相关系数值与时间的关系?

时间:2017-04-12 07:23:47

标签: matlab correlation

我的相关系数值是:

corr=[0.54   0.81   0.21   0.61   0.52   0.47   -0.42   -0.20].

这些相关系数值的相应时间是:

T=[00:00 -  00:27:02    00:27:02 - 00:35:02    00:35:02 - 00:47:02     00:47 - 00:59:55   01:05:02 - 01:12    01:15 - 01:25    01:27 - 01:35  01:35 - 01:45  ].

时间以小时:分钟:秒格式给出。我想绘制相关系数值与时间的关系。另外,我希望获得95%的置信度。该示例在链接https://www.researchgate.net/post/plotting_correlation_coefficient_values_against_time中给出。任何帮助将不胜感激。感谢

1 个答案:

答案 0 :(得分:0)

首先我将日期字符串拆分为start&结束时间,然后我将它们转换为数字:

coeffs = [0.54 0.81 0.21 0.61 0.52 0.47 -0.42 -0.20];
T = {'00:00 - 00:27:02', '00:27:02 - 00:35:02', '00:35:02 - 00:47:02', '00:47 - 00:59:55', '01:05:02 - 01:12', '01:15 - 01:25', '01:27 - 01:35', '01:35 - 01:45'};
% split to start and end times
startEndTimes = cellfun(@(str) strsplit(str,' - '),T,'UniformOutput',0);
startTimes = cellfun(@(c) c{1},startEndTimes,'UniformOutput',0);
endTimes = cellfun(@(c) c{2},startEndTimes,'UniformOutput',0);
% add seconds where missing
missingSecondsIdx = cellfun(@length,startTimes) == 5;
startTimes(missingSecondsIdx) = cellfun(@(str) [str ':00'],startTimes(missingSecondsIdx),'UniformOutput',0);
missingSecondsIdx = cellfun(@length,endTimes) == 5;
endTimes(missingSecondsIdx) = cellfun(@(str) [str ':00'],endTimes(missingSecondsIdx),'UniformOutput',0);
% convert time strings to numbers
startTimeNums = datenum(startTimes,'HH:MM:SS');
EPS = 1e-4;
endTimeNums = datenum(endTimes,'HH:MM:SS') - EPS;
% interpolate coefficients on "continous" time vector
contTime = linspace(startTimeNums(1),endTimeNums(end),200);
repCoeffs = repmat(coeffs,[2 1]);
repCoeffs = repCoeffs(:);
allTimes = [startTimeNums';endTimeNums'];
allTimes = allTimes(:);
contCoeffs = interp1(allTimes,repCoeffs,contTime);
% plot
plot(contTime,contCoeffs,'b')
hold on;
plot(startTimeNums,coeffs,'og')
plot(endTimeNums,coeffs,'*r')
datetick('x','HH:MM')
xlabel('TIME [HH:MM]')
ylabel('CORRELATION COEFFICIENTS')

enter image description here