【发布时间】:2016-01-10 15:28:12
【问题描述】:
我有这样的数组
a =
24 700
10 500
36 560
50 240
10 600
30 500
70 450
10 200
预期的结果是
a =
10 500
36 560
24 700
10 200
50 240
30 500
10 600
70 450
这意味着在第一列中的元素(x)满足50或更大之后,它应该根据第二列对元素进行排序,之后它应该将第二列元素从x排序到下一个更高元素之前的元素。
谁能帮帮我??
【问题讨论】:
-
不,先生,这是出于项目目的。这是为了根据对象的质心对对象位置进行某种排序。
-
使用
sort和在循环中循环并不是很难:D 但我知道我们必须避免在 MATLAB 中使用循环,所以用矩阵来做这件事很有趣...... -
嗯,你能再解释一下你想要什么吗?这很令人困惑..
-
我想您可以在第 1 列中找到大于 50 的元素,然后您可以遍历这些索引。这会将代码减少到单个 for 循环,这应该是相当有效的。请注意,您实际上并没有为每个索引对整个数组进行排序,这也应该保持算法相当有效。
-
遵循@patrik 的说明,如果第一行中的值超过 50,请小心
标签: arrays matlab sorting optimization