在Matlab中的多维数组中找到最接近常量的值

Find closest value to a constant in a multidimensional array in Matlab

我有一个矩阵 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 是整个矩阵中最接近的值。知道我该怎么做吗?

B转换为列(或行)向量并减去常量kk 可能大于或小于 B 中的目标值,因此使用 abs to remove this problem. Now use min to find the linear index of the closest value. Then use ind2sub 将其转换为相应的 3D 下标 rcv.

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