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

6 次查看(过去 30 天)
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 个评论
Walter Roberson
Walter Roberson 2022-8-28
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.

请先登录,再进行评论。

采纳的回答

Voss
Voss 2022-8-28
编辑:Voss 2022-8-28
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);

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Numerical Integration and Differential Equations 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by