Я неправильно использую historyc, или это ошибка MATLAB?

Хорошо, вот некоторый код в 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 ответ

Решение

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

n = histc(x,edges);

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

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

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

Другие вопросы по тегам