查找数组中给定值的最接近的值集

Ann*_*ann 1 matlab

A = 
0.75
0.6
0.62
0.51
0.53
0.48
Run Code Online (Sandbox Code Playgroud)

在这样的数组中,如何计算最接近给定数字的x个值的索引?例如:

x = 0.5 %Given number 
y = 3; %Number of values closest to (x) to extract
Run Code Online (Sandbox Code Playgroud)

在这里,我们希望将三个最接近的值提取到0.5 - 0.51,0.53和0.48.

[~,I] = min(abs(data-b));
c = data(I);
Run Code Online (Sandbox Code Playgroud)

我到目前为止,但这只提取一个值 - 绝对最接近.

Adr*_*aan 5

A = [0.75
0.6
0.62
0.51
0.53
0.48];

x = 0.5 %Given number 
y = 3; %Number of values closest to (x) to extract

[~,c] = sort(abs(A-x));
yclosest=A(c(1:y));
Run Code Online (Sandbox Code Playgroud)

这使用第二个输出sort来索引原始数组A.首先x从数组中减去数字A并取绝对值,然后对其进行排序并取最小y数字并使用它们进行索引A.