我有一个整数值矩阵,x轴代表不同的天数,y轴代表一天中的小时。并且在每个单元格中都有一个数字,表示一天中有多少小时符合当天正在进行的某些标准。这就是为什么我需要每小时计算一次,而不仅仅是在结束时。
整个问题是我必须挑选最低数量(最少对应)的5个最佳日子。因此,基本上在矩阵中,它意味着选择行中的5个最低数字,记住列的索引,其中最小值为。 (我需要知道它发生在哪一天)。因为随着时间的推移,每次都可能是5天不同,所以对整个表进行排序会很麻烦。
我可以通过获取前5个数字使其工作变得非常丑陋,然后当我在路上找到较小的数字时,我会忘记5中的最大数字,并记住新的列的索引。然而,这个解决方案似乎非常草率。在Matlab中必须有一个更好的方法来解决这个问题。
任何可以让我的生活更轻松的想法,功能?
1 1 0 1 1 1 0 0 1 1
1 2 1 2 2 1 0 1 2 2
例如,在从1-10开始索引的这两行中,在第一行中它应该返回列 3,7,8和另外两个人并不真正关心哪一个。 在第二行,它应该返回第7,8,6,1,3列。
答案 0 :(得分:2)
A = randi(60,100,2);
[min_val,index] = sort(A(:,2),'ascend');
output = [A(index(1:5),1) A(index(1:5),2)];
这应该对你有帮助(我猜);
答案 1 :(得分:1)
可能最简单(但不是最有效)的方法之一是使用sort
函数(也返回已排序的索引):
>> [~,index] = sort([1 1 0 1 1 1 0 0 1 1]);
>> index(1:5)
ans =
3 7 8 1 2
>> [~,index] = sort([1 2 1 2 2 1 0 1 2 2]);
>> index(1:5)
ans =
7 1 3 6 8