Matlab 在数组中查找与给定值最近的值集
在这样的数组中,如何计算最接近给定数字的x个值的索引?例如: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); 这将使用的
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);