Я неправильно использую historyc, или это ошибка MATLAB? - PullRequest
4 голосов
/ 12 июня 2009

Хорошо, вот код в 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])

, который выводит следующее:

ans = 2     1     1     2     1
ans = 2     1     1     2     5     0
ans = 3     2     1     1     2     1

Мой вопрос: почему MATLAB возвращает бесполезный 0, когда вы используете inf в размере корзины (в данном случае это означает> = 5)?

Не всегда ли это будет ноль? В справке говорится, что выходной файл всегда будет той же длины, что и размер корзины, но разве это не плохая спецификация в этом случае?

1 Ответ

7 голосов
/ 12 июня 2009

Это на самом деле правильное поведение HISTC . Когда вы используете синтаксис:

n = histc(x,edges);

тогда из документации:

n (k) считает значение x (i), если ребра (k) <= x (i) <ребра (k + 1). Последняя корзина считает любые значения х, которые соответствуют края (конец). </p>

Таким образом, последнее значение ребра, которое вы дадите, вернет счет того, сколько вещей точно соответствуют ему. Когда inf является последним значением ребра, это означает 0 (т.е. в данных нет inf s). Когда 5 является последним значением ребра, оно точно соответствует 1 значению в данных.

...