Matlab 在数组中查找与给定值最近的值集

Matlab 在数组中查找与给定值最近的值集,matlab,Matlab,在这样的数组中,如何计算最接近给定数字的x个值的索引?例如: A = 0.75 0.6 0.62 0.51 0.53 0.48 这里我们希望提取三个最接近0.5-0.51、0.53和0.48的值 x = 0.5 %Given number y = 3; %Number of values closest to (x) to extract 这是我到目前为止得到的,但这只提取了一个值-绝对最接近的值 [~,I] = min(abs(data-b)); c = data(I); 这将使用的

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

A = 
0.75
0.6
0.62
0.51
0.53
0.48
这里我们希望提取三个最接近0.5-0.51、0.53和0.48的值

x = 0.5 %Given number 
y = 3; %Number of values closest to (x) to extract
这是我到目前为止得到的,但这只提取了一个值-绝对最接近的值

[~,I] = min(abs(data-b));
c = data(I);
这将使用的第二个输出对原始数组
A
进行索引。首先,从数组
A
中减去数字
x
,取绝对值,如前所述,然后对其排序,取最小的
y
数字,并使用这些数字对
A
进行索引


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

对绝对差异进行排序,并选择使此差异最小化的三个值,这是最规范的方法。。。。事实上,这就是我的建议

不过,为了完整性,如果您可以使用工具箱考虑从统计工具箱中使用,并返回<代码> k=3 最近点。

knnsearch
的输出为您提供最近点的索引。要查找实际点,请在以下内容之后索引到
A

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));
我们得到:

A = [0.75
0.6
0.62
0.51
0.53
0.48];

x = 0.5;
y = 3;

IDX = knnsearch(A, x, 'K', y);
out = A(IDX);

对绝对差异进行排序并选择三个使差异最小化的值是最规范的方法。。。。事实上,这就是我的建议

不过,为了完整性,如果您可以使用工具箱考虑从统计工具箱中使用,并返回<代码> k=3 最近点。

knnsearch
的输出为您提供最近点的索引。要查找实际点,请在以下内容之后索引到
A

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));
我们得到:

A = [0.75
0.6
0.62
0.51
0.53
0.48];

x = 0.5;
y = 3;

IDX = knnsearch(A, x, 'K', y);
out = A(IDX);