簡體   English   中英

在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轉換為列(或行)向量,然后減去常數k k可能大於或小於B目標值,因此請使用abs消除此問題。 現在使用min查找最接近值的線性索引。 然后使用ind2sub將其轉換為相應的3D下標rcv

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM