6

我正在使用 Matlab 2012a。

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

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

4

3 回答 3

14

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

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

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

解释:

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

于 2013-02-08T15:03:40.373 回答
1

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

这可能不是最节省内存的方法,但只需 1000 个值就可以完成工作!

希望能帮助到你!

于 2013-02-08T15:03:54.540 回答
1

使用minmaxselectionMATLAB 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
于 2014-11-11T10:54:08.077 回答