Domanda

Vorrei includere un ciclo nel mio script che trova la correlazione di ogni possibile combinazione dei dati. Questo può essere fatto manualmente il seguente codice:

clear all
%generate fake data
LName={'Name1','Name2','Name3'};
Data={rand(12,1),rand(12,1),rand(12,1)};
%place in a structure
d = [LName;Data];
Data = struct(d{:});
%find the correlation
[R,P] = corrcoef(Data.Name1,Data.Name2);
[R2,P2] = corrcoef(Data.Name1,Data.Name3);
[R3,P3] = corrcoef(Data.Name2,Data.Name3);

Tuttavia, mi piacerebbe fare questo in un ciclo, ho iniziato, ma non sono riusciti al primo ostacolo. Il mio tentativo di ciclo, che non funziona è la seguente:

SNames=fieldnames(Data);
for i=1:numel(SNames);
    [R{i},P{i}] = corrcoef(Data.(SNames{i}),Data.(SNames{i+1}));
end

sto lottando per sapere come dire MATLAB per ciclare su una diversa combinazione di valori con ogni iterazione.

Qualsiasi aiuto fornito sarebbe molto apprezzato.

È stato utile?

Soluzione

provare qualcosa di simile:

pairs = combnk (1:3,2) % all combinations of 2 elements taken out of the vector [1,2,3]
for i = 1 : size (pairs,1)
   [R{i},P{i}] = corrcoef(Data.(SNames{pairs(i,1)}),Data.(SNames{pairs(i,2)}));  
end

Altri suggerimenti

@ItamarKatz risposta è un buon compromesso. Tuttavia, se non si ha la casella degli strumenti statistici, non è possibile utilizzare il combnk di comando.
In tal caso, è possibile scaricare combinazioni generatore da qui .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top