Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在Matlab中查找多维数组中与常数最近的值_Arrays_Matlab_Find_Closest - Fatal编程技术网

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

Arrays 在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

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);