如何在matlab中通过多个索引查找一个项目
How to lookup an item by multiple indexes in matlab
我有一个 n+1 列矩阵。
我想要一个函数 mySearch(idx1,idx2...,idxn) returns 行中的第 n+1 列,其前 n 个元素等于 idx1...idxn
下一步,我希望 mySearch 通过一些简单的插值 return 一个最接近索引的值。
有没有简单的方法来做到这一点?
谢谢
使用函数find
- http://www.mathworks.com/help/matlab/ref/find.html
例子
[rol,col]=find(matrix(idx1==SOMETHING))
这为您提供了所需点在矩阵中的位置。这样,您还可以根据您的条件找到接近他们位置的位置
使用norm
确定距离,min
获得最接近的值:
function v=mySearch( idx, M )
n=length(idx);
d=[]
for row = M'
d=[d; norm(row(1:n)-idx) ]
end
[~, I]=min(d);
v = M(I,n+1);
end function
上面idx
是[idx1, idx2, ..., idxn]
的向量。
我有一个 n+1 列矩阵。 我想要一个函数 mySearch(idx1,idx2...,idxn) returns 行中的第 n+1 列,其前 n 个元素等于 idx1...idxn
下一步,我希望 mySearch 通过一些简单的插值 return 一个最接近索引的值。
有没有简单的方法来做到这一点?
谢谢
使用函数find
- http://www.mathworks.com/help/matlab/ref/find.html
例子
[rol,col]=find(matrix(idx1==SOMETHING))
这为您提供了所需点在矩阵中的位置。这样,您还可以根据您的条件找到接近他们位置的位置
使用norm
确定距离,min
获得最接近的值:
function v=mySearch( idx, M )
n=length(idx);
d=[]
for row = M'
d=[d; norm(row(1:n)-idx) ]
end
[~, I]=min(d);
v = M(I,n+1);
end function
上面idx
是[idx1, idx2, ..., idxn]
的向量。