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

StackOverflow https://stackoverflow.com/questions/988276

  •  13-09-2019
  •  | 
  •  

Вопрос

Хорошо, вот немного кода в 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)?

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

Это было полезно?

Решение

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

n = histc(x,edges);

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top