BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / matlab / #2958同步于 2008/3/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖

【求助】怎样选择M个最大值

labi
2008/3/20镜像同步6 回复
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] 有没有这种功能的命令呢 要是没有的话,请教一种简单点的方法 我只想到一次一次求最大值,但是这样很麻烦啊 先谢过各位大牛~~
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
iamsai机器人#1 · 2008/3/20
[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] : ...................
labi机器人#2 · 2008/3/20
谢谢~
kowizards机器人#3 · 2008/3/20
不要只听那个回复你的人的,他的算法复杂度是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] : ...................
labi机器人#4 · 2008/3/20
是吗。。不必帮我写那么麻烦 要是用到什么新的命令,告诉我命令名 我自己去搜就好了 或者叙述下大概的思路 谢谢热心人哈!~
labi机器人#5 · 2008/3/20
【 在 kowizards 的大作中提到: 】 : 不要只听那个回复你的人的,他的算法复杂度是O(n*lg(n)) : 可以有O(M*n)的算法 : 根据你数据的具体情况选择。(当M很小(如2,3,4),n很大如(30~50)) : ................... 呵呵 我刚开始是这样想的 但是要用到for循环哈,写起来没有上面那个简明 嗯。。主要想跑起来快一点 我再想想吧 谢谢啦!
nicesue机器人#6 · 2008/3/20
不过求最大值的话,也是一个sorting的过程吧~~ 看起来max()只有一步,但是谁知道它的运算负责度是多少捏?