2013-10-26 50 views
1

我有1000行2列的矩阵A.使用MATLAB中最接近的值匹配列元素

A = [0.0325 5.6 ; 0.0367 7.6 ; 0.0391 8.1 ; 0.0404 9.7; etc.] 

我想找到匹配的元素在第二列中给定的值,不一定在第一列。

例如,对于一个给定的值0.0371,我想要一个值7.6,因为它对应于距我的输入0.0371(0.0367)最近的元素的第二列值。

为0.0393,我想8.1等

回答

1

你可以计算每个元素和你的期望值之间的差值,然后找到最低的指数。您想要的值将在第2列的索引处。

[~,idx] = min(abs(A(:,1)-testval)); 
desiredval = A(idx,2); 
+2

有趣的事实:如果您只是使用'val'作为虚拟变量,则可以用'〜'替换它。例如:'[〜,idx] = min(abs(A(:,1)-testval));' – nispio

+0

我认为这只适用于... R2012a以上的版本,我想说,但它可能在那。尽管如此,好点,编辑回答! – darthbith