How to find the position of a real vector in a matrix?
3 ビュー (過去 30 日間)
古いコメントを表示
I do have a very big matrix of real numbers, I need a function that takes a vector as input and returns its position in the matrix.
An example:
A =[
0.7081 0.0797 0.1418 0.5849 0.1305
0.0738 0.4849 0.5060 0.8479 0.5003
0.8723 0.1511 0.6346 0.0683 0.7673
0.2021 0.4461 0.7313 0.7355 0.4157
0.7050 0.8435 0.8158 0.2139 0.8008]
Suppose I want to find the position of
v=[ 0.7081 0.0797 0.1418 0.5849 0.1305]
in A
How can I do it?
I edited the question
2 件のコメント
Walter Roberson
2020 年 3 月 6 日
You cannot. Those values do not exist in the matrix.
You need to give the command
format long g
And then display A again.
回答 (2 件)
dpb
2020 年 3 月 6 日
>> find(ismember(A,v,'rows'))
ans =
1
>>
works here, but in general for floating point values
>> find(ismembertol(A,v,2*eps,'byrows',1))
ans =
1
>>
is more robust and will avoid surprises.
2 件のコメント
Walter Roberson
2020 年 3 月 6 日
Dists = pdist2(A, v);
[mindist, rowidx] = min(Dists) ;
if mindist > some_tolerance
error('row not found') ;
end
3 件のコメント
dpb
2020 年 3 月 7 日
編集済み: dpb
2020 年 3 月 7 日
Shouldn't w/ the given example data...altho suppose it's possible with the real data instead of that rounded off in the pasted text instead of actual data from memory.
>> D=pdist2(w,c);
>> [minD,ixMin]=min(D)
minD =
0
ixMin =
1
>>
With the rounded data from the posting it's identically zero.
Did you look at what was returned at all or just complain...
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!