大部分重复的值

问题描述:

我知道如何检查matlab中的8-neighbourhood(即; nlfilter)。但是,我想将更重复的值赋予中心值。所以,说例如,我有在8附近以下值:大部分重复的值

2值= 56

3值= 64

1值= 70

1-值= 87

1值= 65

在这种情况下,我们将分配64中心像素。

我们该怎么做?

谢谢。

+0

什么冲突,即两个值是最重复的? – Oleg 2013-04-27 01:55:10

我想你想要modehistc函数。

M =模式(X)为向量X计算M能够作为样本模式,或最频繁 在 X.

实施例出现的值与数据:

x = [56 56 64 64 64 70 87 65]; 
mode(x) 

ans = 

64 

但是这只会让你获得最频繁的价值。

如果你想在阵列中的每个唯一项目的数量,你可以做,

unqx = unique(x); 

unqx = 

56 64 65 70 87 

valueCount = histc(x, unqx) 

ans = 

2  3  1  1  1 

然后,您可以进行排序这一点,并采取先N

valueCount = sort(valueCount, 'descend'); 
% Use unqx(valueCount(1:N)) 
+0

要记住:*“当多个值同时出现的频率相同时,模式返回这些值中最小的值”* – Oleg 2013-04-27 02:29:39

+0

要计数,'histc()'是更好的选择。 – Oleg 2013-04-27 02:36:02