【问题标题】:Most repeated values重复次数最多的值
【发布时间】:2015-11-05 02:22:18
【问题描述】:

我知道如何检查matlab 中的8-neighbourhood(即nlfilter)。但是,我想将更多重复的值分配给中心值。因此,例如,假设我在 8-neighbourhood 中有以下值:

2 值 = 56

3 值 = 64

1-值 = 70

1-值 = 87

1-值 = 65

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

我们该怎么做?

谢谢。

【问题讨论】:

  • 冲突怎么办,即两个值重复次数最多?

标签: matlab neighbours


【解决方案1】:

我认为您需要 modehistc 函数。

向量 X 的 M=mode(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))

【讨论】:

  • 请记住:“当有多个值同样频繁地出现时,模式返回这些值中的最小值”
  • 算上,histc() 是更好的选择。
猜你喜欢
  • 1970-01-01
  • 2016-02-08
  • 1970-01-01
  • 1970-01-01
  • 2020-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-28
相关资源
最近更新 更多