Следующий пример напоминает похожую проблему, с которой я имею дело, хотя приведенный ниже код является просто примером, он структурирован в том же формате, что и мой фактический набор данных.
clear all
England = struct('AirT',rand(320,1),'SolRad',rand(320,1),'Rain',rand(320,1));
Wales = struct('AirT',rand(320,1),'SolRad',rand(320,1),'Rain',rand(320,1));
Ireland = struct('AirT',rand(320,1),'SolRad',rand(320,1),'Rain',rand(320,1));
Scotland = struct('AirT',rand(320,1),'SolRad',rand(320,1),'Rain',rand(320,1));
Location = struct('England',England,'Wales', Wales, 'Ireland',Ireland,'Scotland',Scotland);
FieldName={'England','Wales','Scotland','Ireland'};
Data = {England.AirT,Wales.AirT,Scotland.AirT,Ireland.AirT};
Data = [FieldName;Data];
Data = struct(Data{:});
Data = cell2mat(struct2cell(Data)');
[R,P] = corrcoef(Data,'rows','pairwise');
R_Value= [FieldName(nchoosek(1:size(R,1),2)) num2cell(nonzeros(tril(R,-1)))];
Итак, этот скрипт покажет корреляцию между парами температуры воздуха в 4 местах. Я ищу способ также посмотреть на корреляцию между SolRad и Rain между местоположениями (тот же процесс, что и для AirT) или любыми переменными, обозначенными в структуре. Я мог бы сделать это, заменив входные данные на «Данные», но это кажется довольно длинным, особенно когда задействовано много различных переменных. Есть идеи, как это сделать? Я попытался использовать цикл, но это кажется сложнее, чем я, хотя попытаться получить данные в том же формате, что и в примере.