About the use of find
Afficher commentaires plus anciens
I want to detect values greater than 10 and get their indices.
In my case, I'm using find to get the index as follows.
y = find( x > 10 );
I think find is finding the value greater than 10 in all elements of x and getting the index.
So I have a question.
Does find start computing at the moment when all the elements of x are given, rather than at the moment when any element of x is given?
I would like to perform the computation at the moment when even one element of x is given, do the same process as find, get the same index, and store it in the same way.
In that case, what kind of program should I write? It would be great if you could post your program.
4 commentaires
Does find start computing at the moment when all the elements of x are given...
The function find can work even with empty matrices.
find([]>10)
As you see, the result is an empty array, because no element in an empty array is larger than 10 obviously.
% No element is larger than 10
x = [1 2];
find(x>10)
% x now has one new element, it is larger than 10 indeed, and it is the
% element of index 3, so find will return the value 3
x = [1 2 12];
find(x>10)
I would like to perform the computation at the moment when even one element of x is given, do the same process as find, get the same index, and store it in the same way.
What does this mean? You want to replicate what find is doing using your own code or what?
"I think find is finding the value greater than 10 in all elements of x and getting the index."
No. That logical comparison identifies all values of x greater than 10, and returns the corresponding logical array.
Find then just returns the linear/subscript indices of that logical array (which is why logical indexing is faster, because it simply avoids this second step entirely).
"Does find start computing at the moment when all the elements of x are given, rather than at the moment when any element of x is given?"
What exactly does that mean? What is a "given" element, how is it distinguished from a not "given" element?
Please give an example of a MATLAB array where some element is "given" but some other elements are not "given".
A
le 23 Août 2021
Réponses (1)
Wan Ji
le 23 Août 2021
Find is not at all faster than logical inices.
IF you know how to use logical indices to get elements from matrix. I believe you will like it.
A = [true, false, true, false]; % logical inices
B = [4,3,5,6];
B(A) % this gets the value in B corresponds to true element in A
Then
ans =
4 5
But find should have such a following process
p = find(A);
B(p)
Also,
ans =
4 5
Find sometimes can be implemented by
n = 1:1:length(A);
p = n(A)
Then
p =
1 3
1 commentaire
A
le 23 Août 2021
Catégories
En savoir plus sur Logical dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!