Найти ближайшее значение к константе в многомерном массиве в Matlab - PullRequest
0 голосов
/ 28 июня 2018

у меня есть матрица 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 голосов
/ 28 июня 2018

Преобразовать B в вектор столбца (или строки) и вычесть постоянную k. k может быть больше или меньше целевого значения в B, поэтому используйте abs, чтобы устранить эту проблему. Теперь используйте min, чтобы найти линейный индекс ближайшего значения. Затем используйте ind2sub, чтобы преобразовать его в соответствующие трехмерные индексы r, c и v.

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