arrays - 获取相对于值 Matlab 排序的数组

标签 arrays matlab sorting

假设我有一个 double 组:

arr = 120,121,118,119,117,123,120

还有一个值x

x = 120

我想得到这个值

newarr = 120,120,119,121,118,117,123

这是一个新数组,与 arr 的大小相同,但值是根据值 x 排序的,最接近的值排在第一位(不管它是升序还是降序)。

有什么想法吗?

最佳答案

一种方法-

[~,idx] = sort(abs(x-arr))
out = arr(idx)

输出-

out =
   120   120   121   119   118   117   123

因为 191 & 121x = 120 等距,输出值似乎与预期中列出的值不同问题的输出。在这种方法中,当 arr 中出现两个这样的等距值时,出现在开头的值也将放在输出数组的开头,因此元素的顺序得到了保持 或者它在输出数组中是 stable。作为演示这种“稳定性”的示例,这是一个示例运行,其中修改了 arr 并保持 x120 -

>> arr
arr =
   120   121   118   119   117   123   121   119
>> out
out =
   120   121   119   121   119   118   117   123

注意:如果你想对等距元素进行升序排列,你可以先对 arr 进行排序,然后再使用这种方法。

关于arrays - 获取相对于值 Matlab 排序的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29733233/

相关文章:

matlab - 启动时运行 Matlab 脚本

algorithm - 如何在 MATLAB 中表示簇?

c++ - 为什么 std::priority_queue 对其容器的元素进行排序?

java - 复数类多项式乘法

arrays - 如何从一个数组中删除另一个数组的元素?

arrays - 将类型数组转换为协议(protocol)时出现 fatal error : cannot be bridged from Objective-C

arrays - 如何根据键的值对 TCL 数组进行排序?

python - 如何在具有多个条件的python中进行排序?

ios - 如何从任意数组中的枚举获取原始值

javascript - AngularJS ngRepeat - 使用复选框按单个对象属性过滤列表