Сортировка предметов в мусорные баки в MatLab
Вопрос
Если у меня есть набор данных y, и набор мусорных барабанов, сосредоточенных на X, я могу использовать команду HIST, чтобы найти, сколько из каждого Y находятся в каждом корзине.
N = hist(Y,X)
То, что я хотел бы знать, это если есть встроенная функция, которая может сказать мне, на какую корзину каждый уйдет, так
[N,I] = histMod(Y,X)
будет означать, что y (i == 1) вернет бы все Y в Bin 1 и т. Д.
Я знаю, как написать эту функцию, поэтому я задаюсь вопросом, только если в Matlab есть уже встроенный в Matlab.
Решение
Связанная функция histc
Соответствует ли это, но это требует, чтобы вы определили ребра мусорное ведро вместо корпоративных центров.
Y = rand(1, 10);
edges = .1:.1:1;
[N, I] = histc(Y, edges);
Вычислительные края, данные Binkenters тоже легко. В одном вкладыке:
N = hist(Y, X);
становится
[Nc, Ic] = histc(Y, [-inf X(1:end-1) + diff(X)/2, inf]);
с nc == n, плюс один дополнительный пустой корзину в конце (так как я не принимаю значение в y matchs inf). Видеть doc histc
.
Другие советы
Если кто-то удовлетворен использованием бин-краев вместо мусорных барабанов,
[N,bin] = histc(y,binedges)
работает. AAARGH, MATLAB Ваши определения функций настолько неразрывно