MatLab-histc с вектором множества ребер
Рассмотрим это :
a = [1 ; 7 ; 13];
edges = [1, 3, 6, 9, 12, 15];
[~, bins] = histc(a, edges)
bins =
1
3
5
Теперь я хотел бы иметь тот же выход, но с другим вектором "ребер" для каждого значения a
, то есть матрицу вместо вектора для ребер. Исключение:
a = [1 ; 7 ; 13];
edges = [ 1, 3, 6 ; 1, 4, 15 ; 1, 20, 30];
edges =
1 3 6
1 4 15
1 20 30
indexes = theFunctionINeed(a, edges);
indexes =
1 % 1 inside [1, 3, 6]
2 % 7 indide [1, 4, 15]
1 %13 inside [1, 20, 30]
Я мог бы сделать это с histc
внутри петли for
, стараясь избегать петель.
2 ответа:
Если вы преобразуете свои массивы в массивы ячеек, вы можете попробовать
a = {1 ; 7 ; 13}; edges = {[ 1, 3, 6 ];[ 1, 4, 15] ; [1, 20, 30]}; [~, indexes] = cellfun(@histc, a, edges,'uniformoutput', false)
Это приводит к
indexes = [1] [2] [1]
~edit~
Для преобразования матриц в массивы ячеек можно использовать
num2cell
:a = num2cell(a); edges = num2cell(edges, 2);