find function

조회 수: 10 (최근 30일)
Chiara Modenese
Chiara Modenese 2011년 3월 27일
답변: Mohammad amiri 2013년 11월 24일
Hello,
can anyone enlighten me about the use of find() function? Is it really so bad in performance to use? Any alternative?
Thanks, Chiara

채택된 답변

Matt Tearle
Matt Tearle 2011년 3월 27일
No. I'm guessing you are getting feedback from either humans or the MATLAB Code Analyzer about using logical indexing instead of find...? In that case, yes, that's true, but it depends on your application. If you really need indices, then use find. If, however, you're only using it to index into other arrays, skip find and just index directly. Eg instead of
idx = find(x > pi);
z = y(idx);
do
idx = x > pi;
z = y(idx);
Similarly, if you just want to know how many values satisfy some criterion, use nnz rather than numel(find(...))
Bottom line: there's nothing wrong with find if you really want to find indices. But if it's really just an intermediate step to something else, there are often neater ways to get there.
  댓글 수: 1
Chiara Modenese
Chiara Modenese 2011년 3월 27일
Logical indexing is what I was looking for. Cheers! C.

댓글을 달려면 로그인하십시오.

추가 답변 (3개)

Walter Roberson
Walter Roberson 2011년 3월 27일
logical indexing is often an alternative to find.
Performance -- it depends what you are trying to do. For some problems there are more efficient solutions. For example if relatively few of the elements are non-zero, then using sparse matrices might be productive. (Note: if you do use sparse matrices, then find() gets used even more often, but is quite efficient.)

jasprit kour
jasprit kour 2011년 3월 27일
find function only gives you the index of the value u want to find. there is also option you can also get the row and column index and and you only get the non-zero values.

Mohammad amiri
Mohammad amiri 2013년 11월 24일
for 2D matrix you can write: a=rand(10,10); [r,c]=find (a>0.5); return the row and column of matrix witch is greater than 0.5

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by