У меня есть вектор d
:Как найти и наметить наиболее часто используемые значения с крошечной дисперсией в MATLAB?
d = [
1.19011941712580e-06
6.39136179286748e-06
1.26442316296575e-05
1.81039120389278e-05
1.91304903300688e-05
2.19912290910362e-05
2.94113112667430e-05
3.42238417249065e-05
4.14201181268186e-05
5.76014376298924e-05
6.81337071520188e-05
0.000108396864465101
0.000130922201344182
0.000145712942644687
0.000174386494384153
0.000262758083529471
03050975943883
0.000373066486719321
0.000423949134658855
0.000489079623696380
0.000548432526451254
0.000694787830192734
0.000881370593483890
0.00125516689720339
0.00145237435686831
0.00815957230852142
0.0210146005799470
0.0507995676939279
0.0541594307796186
1
]
Plotting d
:
plot(d, 'x:')
В этой ситуации [M, F] = mode(d)
дает результат, что я не хочу.
Есть ли какая-либо функция, которая учитывает самые частые значения, которые учитывают определенный допуск?
Можно рассмотреть вопрос о кластеризации. Однако на приведенном выше рисунке кластеризация может назначить d(27:29)
в левый кластер.
Текущий подход normilizing и пороговая:
d_norm = d/max(d);
v = d_norm(d_norm < 0.01); % 1 percent threshold
Однако, я думаю, что это своего рода жестко закодированным, а не хороший подход.
гистограмма? определенно гистограмма –
@Подробнее Бигури, можете ли вы предложить более подробно? например, как определить количество ячеек? – Jeon
Я понял, что вам может не понадобиться то, что я разместил. Возможно, вам нужно будет лучше определить способ вычисления толерантности, поскольку первые значения очень близки друг к другу. –