How can I find an specific value inside an array without using the find function?

14 vues (au cours des 30 derniers jours)
I need to store the index when w>=10 in an array without using the find function. So for example in my code w=10 at t1 8. Is there any way to do that without using the find function?
array=zeros(2,2);
t=0:20;
i=2;
dwdt = @(t,w)(-2.*w+5.05.*w.^0.6);
[t,w] = ode45(dwdt,t,0.5);
%w=10 @ t= 8
index= find(w>=10);%dont use find function
array(i)= index(1);
  1 commentaire
Walter Roberson
Walter Roberson le 28 Août 2022
What is the reason to avoid find()? There are ways to get indices in a vectorized way without using find() but they are not especially efficient for large matrices.

Connectez-vous pour commenter.

Réponse acceptée

Voss
Voss le 28 Août 2022
Modifié(e) : Voss le 28 Août 2022
You can use the max function with second output argument, applied to the logical array w>=10, in order to return the first index where w>=10.
array=zeros(2,2);
t=0:20;
i=2;
dwdt = @(t,w)(-2.*w+5.05.*w.^0.6);
[t,w] = ode45(dwdt,t,0.5);
%w=10 @ t= 8
[~,index] = max(w>=10);
disp(index)
8
array(i)= index(1);

Plus de réponses (0)

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by