Jur*_*eri 3 arrays sorting matlab
假设我有一个双打数组:
arr = 120,121,118,119,117,123,120
Run Code Online (Sandbox Code Playgroud)
而值x
x = 120
Run Code Online (Sandbox Code Playgroud)
我想得到这个价值
newarr = 120,120,119,121,118,117,123
Run Code Online (Sandbox Code Playgroud)
这是一个新的数组,大小与arr相同,但是值是相对于值x排序的,具有最接近的值(如果它是升序或降序则无关紧要).
任何的想法?
一种方法 -
[~,idx] = sort(abs(x-arr))
out = arr(idx)
Run Code Online (Sandbox Code Playgroud)
输出 -
out =
120 120 121 119 118 117 123
Run Code Online (Sandbox Code Playgroud)
由于191和121等距离x = 120,输出值似乎与问题的预期输出中列出的值不同.在这种方法中,当出现两个这样的等距值时arr,出现在开头的那些也放在输出数组的开头,因此元素的顺序是maintained或者它stable在输出数组中.作为证明这种"稳定性"的一个例子,这里是一个经过修改arr 并保持x相同的样本运行120 -
>> arr
arr =
120 121 118 119 117 123 121 119
>> out
out =
120 121 119 121 119 118 117 123
Run Code Online (Sandbox Code Playgroud)
注意:如果您希望等距元素有升序,则可以先排序arr然后使用此方法.
| 归档时间: |
|
| 查看次数: |
41 次 |
| 最近记录: |