在数组中找到n个最小值

时间:2013-02-08 14:34:51

标签: matlab minimum minima

我正在使用Matlab 2012a。

我有一组k个单元格(比如1000个)。我需要找到这个数组的5个最低值,并且需要对X和Y中的那些值进行平均。

任何人都知道如何做到这一点?

3 个答案:

答案 0 :(得分:13)

假设您有阵列X和Y,并且想要找到五个最低的Y值:

[m mi] = sort(Y);
lowest5index = mi(1:5);
lowest5Y = Y(lowest5index);
lowest5X = X(lowest5index);

meanYlowest5 = mean(lowest5Y);
meanXlowest5 = mean(lowest5X);

说明:

带有两个输出参数的sort命令返回已排序的数组(在m中)和原始数组中的索引(mi)。前五个索引mi(1:5)对应五个最低值。对X和Y取这些值的mean将做我们想要的。如果我不理解你的问题陈述,请澄清你的问题,我会再拍一次。

答案 1 :(得分:1)

如何从最低值到最高值执行数组的sort,然后选择5个第一个值。那些将是你阵列的5分钟值。然后执行这5个值的平均值。

这可能不是最有效的内存方式,但只需1000个值即可完成工作!

希望它有所帮助!

答案 2 :(得分:1)

使用minmaxselection MATLAB MEX软件包,该软件包已针对此问题进行了专门优化:

a = [2,3,4,7,56,4,21, 64, -2];
mink(a, 2)

<< ans = 
<<    -2  2    

mink(a,4)

<< ans =
<<    -2     2     3     4