从matlab中的向量中选择单个值的算法?

时间:2015-06-02 20:17:40

标签: algorithm matlab vector

我有一个等概率值的向量。让我们说:

 [ 12.62       22.856       22.983       23.111       24.295]

我必须在这些值中选择一个值。在这种情况下,在我看来,我会排除12.62。其余(22.856 22.983 23.111 24.295)的平均值为23.311。我认为23.111应该是这些等概率值之间的一个很好的选择。在考虑任意值和维度的一般向量时,我应该使用哪个标准/算法在所考虑的向量内选择单个值?

3 个答案:

答案 0 :(得分:2)

我正试图从你的问题和迄今为止的评论中读取(即猜测)你隐含已经适用的标准。我想出了这些:

  • 矢量应映射到其中一个元素。
  • 元素中的异常值既不是候选者,也不影响选择其他元素。
  • 候选人的平均数在某种程度上与候选人的选择有关。

根据这些标准,可以提出以下算法:

  1. 识别异常值(确定异常值的标准)
  2. 删除离群值
  3. 计算剩余值的平均值
  4. 选择最接近该意思的其余值之一
  5. 当然,还有无数许多其他算法也能满足所确定的标准,具有不同的意义和对不同用例的不同适用性。当然,再次取决于实际的用例,我确定的标准可能会或可能不是您所做的正确概括。

答案 1 :(得分:1)

  

在考虑任意值和维度的一般向量时,我应该使用哪个标准/算法在所考虑的向量中选择单个值?

这取决于你想要的东西。

可以是mean(input_vector)norm(input_vector)

首先应该问问自己这个标量值是什么/代表什么。

答案 2 :(得分:0)

一个简单的解决方案:

vector=[ 12.62       22.856       22.983       23.111       24.295];  
all_idx = 1:length(vector);
outlier_idx = abs(vector- median(vector)) > 2*std(vector);
vector=vector(~outlier_idx);
val = mean(vector);
tmp = abs(vector-val);
[v, idx] = min(tmp);
vector(idx)

此代码返回23.111,我假设异常值与中位数的偏差超过两个标准偏差。