Arrays 在Matlab中查找多维数组中与常数最近的值
我有一个矩阵BArrays 在Matlab中查找多维数组中与常数最近的值,arrays,matlab,find,closest,Arrays,Matlab,Find,Closest,我有一个矩阵B B(:,:,1) = 2 8 0 5 B(:,:,2) = 1 3 7 9 我想找到一个接近2.9的值的索引。 我尝试了以下代码: [r,c,v] = ind2sub(size(B),find(min(abs(B-2.9)))); 我得到: r = 1 2 1 2 c = 1 1 2
B(:,:,1) =
2 8
0 5
B(:,:,2) =
1 3
7 9
我想找到一个接近2.9的值的索引。
我尝试了以下代码:
[r,c,v] = ind2sub(size(B),find(min(abs(B-2.9))));
我得到:
r =
1
2
1
2
c =
1
1
2
2
v =
1
1
1
1
我想要的是:
r = 1
c = 2
v = 2
因为我希望3是整个矩阵中最接近的值。知道怎么做吗?将
B
转换为列(或行)向量并减去常数k
k
可能大于或小于B
中的目标值,因此使用可消除此问题。现在使用查找最近值的线性索引。然后使用将其转换为相应的三维下标r
、c
和v
k = 2.9;
[~, ind] = min(abs(B(:)-k));
[r, c, v]= ind2sub(size(B), ind);
将
B
转换为列(或行)向量并减去常数k
k
可能大于或小于B
中的目标值,因此使用可消除此问题。现在使用查找最近值的线性索引。然后使用将其转换为相应的三维下标r
、c
和v
k = 2.9;
[~, ind] = min(abs(B(:)-k));
[r, c, v]= ind2sub(size(B), ind);