Если у меня есть матрица:
data = rand(365,5);
Каков наиболее подходящий способ вычисления корреляции между каждым столбцом и средним значением остальных столбцов. Например, для первого столбца:
R = nonzeros(tril(corrcoef(data(:,1),mean(data(:,2:end)')'),-1));
Как я могу повторить эту процедуру, чтобы у меня было 5 значений корреляции, т.е. для каждой серии?
РЕДАКТИРОВАТЬ:
Спасибо за комментарии. Это также можно сделать в одной строке:
R = arrayfun(@(x)nonzeros(tril(corrcoef(data(:,x),...
mean(data(:,setdiff(1:size(data,2),x))')'),-1)),1:size(data,2));
для тех, кто хочет избежать петель. Хотя в этом случае способы, показанные ниже, лучше из-за их читабельности.
corrcoef(data)
не работает? Он должен вернуть матрицу 5x5, содержащую корреляции между всеми возможными комбинациями столбцов. - person slayton   schedule 19.07.2012