返回信息流a向量,a=[ 6, 7, 9, 5, 1, 4, 3, 9, 4, 8]
怎样从中选择4个最大值,如下:
a=[ 6, 7, 9, 5, 1, 4, 3, 9, 4, 8]
并且能够返回这M个最大值的序号,即
max_id=[2,3,8,10]
有没有这种功能的命令呢
要是没有的话,请教一种简单点的方法
我只想到一次一次求最大值,但是这样很麻烦啊
先谢过各位大牛~~
这是一条镜像帖。来源:北邮人论坛 / matlab / #2958同步于 2008/3/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖
【求助】怎样选择M个最大值
labi
2008/3/20镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
[a_ascend, idx] = sort(a);
idx_max = idx(end - 4 +1 :end);
a_max = a(idx_max);
【 在 labi 的大作中提到: 】
: a向量,a=[ 6, 7, 9, 5, 1, 4, 3, 9, 4, 8]
: 怎样从中选择4个最大值,如下:
: a=[ 6, 7, 9, 5, 1, 4, 3, 9, 4, 8]
: ...................
不要只听那个回复你的人的,他的算法复杂度是O(n*lg(n))
可以有O(n*M)的算法,
根据你数据的具体情况选择。(当M很小(如2,3,4),n很大如(30~50))
简单说就是求出最大值,连求M次,这就行了
当M也很大时,可以有O(n*lg(M))的算法,这就相当好了
【 在 labi 的大作中提到: 】
: a向量,a=[ 6, 7, 9, 5, 1, 4, 3, 9, 4, 8]
: 怎样从中选择4个最大值,如下:
: a=[ 6, 7, 9, 5, 1, 4, 3, 9, 4, 8]
: ...................
【 在 kowizards 的大作中提到: 】
: 不要只听那个回复你的人的,他的算法复杂度是O(n*lg(n))
: 可以有O(M*n)的算法
: 根据你数据的具体情况选择。(当M很小(如2,3,4),n很大如(30~50))
: ...................
呵呵
我刚开始是这样想的
但是要用到for循环哈,写起来没有上面那个简明
嗯。。主要想跑起来快一点
我再想想吧
谢谢啦!