Sto usando histc sbagliato, o si tratta di colpa di MATLAB?
Domanda
Ok, ecco qualche codice in MATLAB:
data = [1 1.5 2 3 4 4.5 5 6 7 7 7 0 0 0];
histc(data, [1:1:5])
histc(data, [1:1:5, inf])
histc(data, [-inf, 1:1:5])
che emette il seguente:
ans = 2 1 1 2 1
ans = 2 1 1 2 5 0
ans = 3 2 1 1 2 1
La mia domanda è, perché MATLAB restituisce un inutile 0 quando si utilizza inf nella dimensione bin (per significare> = 5 in questo caso)?
Non Sarà sempre pari a zero? L'aiuto dice che l'uscita sarà sempre la stessa lunghezza del formato bin, ma non è che un cattivo spec in questo caso?
Soluzione
Questo è in realtà il comportamento corretto di HISTC . Quando si utilizza la sintassi:
n = histc(x,edges);
dunque, dalla documentazione:
n (k) conta il valore x (i) se i bordi (k) <= X (i)
Quindi, l'ultimo valore bordo si dà restituisce il conteggio di quante cose esattamente abbinarlo. Quando inf è l'ultimo valore bordo, che conta 0 (vale a dire non ci sono inf s nei dati). Quando 5 è l'ultimo valore bordo, che corrisponda esattamente 1 valore nei dati.