调整模式功能以支持中心值(Matlab)

时间:2012-03-13 13:44:54

标签: matlab average mode

Matlab中的mode - 函数返回数据集中最常出现的值。但“当同时频繁出现多个值时,模式会返回这些值中最小的值。”

这对我使用它的方式并不是很有用,我宁愿让它在没有模态值的情况下返回中位数或算术平均值(因为它们至少在某种程度上处于分布中)。否则,使用mode的结果在规模较低的方面太多了(我的发行版中有很多独特的值)。

是否有一种优雅的方法可以使mode更喜欢数据集中的更多中心值(在没有真正的模态值的情况下)?


btw。:我知道我可以使用[M,F] = mode(X, ...)来手动检查最常见的值(并在必要时计算中位数或平均值)。但这似乎是一个尴尬的解决方案,因为我几乎完全重写了mode应该做的所有事情。我希望有一个更优雅的解决方案。

1 个答案:

答案 0 :(得分:0)

看起来你想要mode的第三个输出参数。 EG:

x = [1 1 1 2 2 2 3 3 3 4 4 4 5 6 7 8];
[m,f,c] = mode(x);
valueYouWant = median(c{1});

或者(因为当存在偶数个条目时,中位数取值的平均值),在偶数个值可能具有相同的最大出现次数的情况下,可以执行以下操作:

valueYouWant = c{1}(ceil(length(c{1})/2))