在Matlab中查找与多维数组中的常数最接近的值

时间:2018-06-28 09:07:49

标签: 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
     2  
 v =

     1
     1
     1
     1

我想要的是:

r = 1  
c = 2  
v = 2

因为我期望3是整个矩阵中最接近的值。知道我该怎么做吗?

1 个答案:

答案 0 :(得分:2)

B转换为列(或行)向量,然后减去常数kk可能大于或小于B中的目标值,因此请使用abs来解决此问题。现在使用min查找最接近值的线性索引。然后使用ind2sub将其转换为相应的3D下标rcv

k = 2.9;
[~, ind] = min(abs(B(:)-k));
[r, c, v]= ind2sub(size(B), ind);