Ordinamento di elementi in contenitori in MATLAB
Domanda
Se ho una serie di dati Y e un gruppo di raccoglitori centrata in X, posso utilizzare il comando HIST per trovare quanti di ogni Y sono in ogni bin.
N = hist(Y,X)
Quello che vorrei sapere è se c'è un costruito in funzione che mi può dire che bin ogni Y entra, così
[N,I] = histMod(Y,X)
vorrebbe dire che Y(I == 1) return tutte le Y in bin 1, etc.
So come scrivere questa funzione, quindi mi sto solo chiedendo se c'è già un built-in in MATLAB che fa questo.
Soluzione
La relativa funzione histc
non questo, ma richiede di definire il bin bordi invece di bin centri.
Y = rand(1, 10);
edges = .1:.1:1;
[N, I] = histc(Y, edges);
Calcolo bordi data la bincenters è troppo facile.In un liner:
N = hist(Y, X);
diventa
[Nc, Ic] = histc(Y, [-inf X(1:end-1) + diff(X)/2, inf]);
con Nc == N, più un ulteriore bidone vuoto alla fine (dal momento che assume alcun valore in Y corrisponde inf).Vedere doc histc
.
Altri suggerimenti
Se uno è soddisfatto con bordi bin al posto di bidoni,
[N,bin] = histc(y,binedges)
funziona. Aaargh, Matlab le definizioni di funzione sono così nonintuitive