Pergunta

Se eu tiver um conjunto de dados y e um conjunto de caixas centralizadas em x, posso usar o comando Hist para encontrar quantos de cada Y estão em cada compartimento.

N = hist(Y,X)

O que eu gostaria de saber é se houver uma função incorporada que possa me dizer em que lixeira cada y entra, então

[N,I] = histMod(Y,X)

significaria que y (i == 1) retornaria todo o y na bin 1, etc.

Eu sei como escrever essa função, então só estou me perguntando se já existe um embutido no Matlab que faz isso.

Foi útil?

Solução

A função relacionada histc Faz isso, mas exige que você defina as bordas da lixeira em vez dos centros de bin.

Y = rand(1, 10);
edges = .1:.1:1;
[N, I] = histc(Y, edges);

Compiar as bordas dadas os bincentros também é fácil. Em um revestimento:

N = hist(Y, X);

torna-se

[Nc, Ic] = histc(Y, [-inf X(1:end-1) + diff(X)/2, inf]);

com NC == n, mais uma lixeira extra vazia no final (já que presumo que nenhum valor em y corresponde a INF). Ver doc histc.

Outras dicas

Se alguém estiver satisfeito em usar bordas de bin em vez de caixas,

[N,bin] = histc(y,binedges)

funciona. Aaargh, matlab suas definições de função são tão não intuitivas

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top