我正在使用 Matlab 2012a。
我有一组 k 个单元格(比如 1000 个)。我需要找到这个数组的 5 个最低值,并且需要对 X 和 Y 中的这些值进行平均。
任何人都知道如何做到这一点?
假设您有数组 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
这些值将做我们想要的。如果我不理解您的问题陈述,请澄清您的问题,我将再试一次。
如何sort
从最低值到最高值做一个数组,然后选择 5 个第一个值。这些将是您数组的 5 分钟值。然后执行这 5 个值的平均值。
这可能不是最节省内存的方法,但只需 1000 个值就可以完成工作!
希望能帮助到你!
使用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