我正在使用Matlab 2012a。
我有一组k个单元格(比如1000个)。我需要找到这个数组的5个最低值,并且需要对X和Y中的那些值进行平均。
任何人都知道如何做到这一点?
答案 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