Find function - scalar result?

4 views (last 30 days)
Cyril CRIER
Cyril CRIER on 8 Apr 2021
Commented: Jan on 5 Mar 2022
Hello,
I'm trying to get the row number where my "goal" value (hier max time /10) is inside my tolerance of 0.001.
%Speed_profil.motorized.time -> Vector 100x1 from 0 to 4,5sec
Ramp=10;
goal = (Speed_profil.motorized.time(end,1)/Ramp);
idx_tol_mot = find(abs(Speed_profil.motorized.time-goal) < 0.001);
The fact to use the find funciton gives me a Vactor as a result.
I'm using this idx_tol_mot in an equation of the form y=ax+b to limit my Speed_profil.motorized.time vector (100x1 matrix).
Speed_profil.motorized.closing.values(1:idx_tol_mot,1) = (- a_mot * Speed_profil.motorized.time(1:idx_tol_mot,1));
Is there an alternative to the find function which can give a scalar variable? or can I convert the idx_tol_mot variable?
Thanks

Answers (1)

Jan
Jan on 8 Apr 2021
Edited: Jan on 8 Apr 2021
Maybe:
idx_tol_mot = find(abs(Speed_profil.motorized.time-goal) < 0.001, 1, 'first');
or
idx_tol_mot = find(abs(Speed_profil.motorized.time-goal) < 0.001, 1, 'last');
But this the output can be empty also, if no matching values are found.
  3 Comments
Alexander Lachenmaier
Alexander Lachenmaier on 5 Mar 2022
Hi,
have you found a solution to this error? I am facing the exact same problem at the Moment.
Alex
Jan
Jan on 5 Mar 2022
@Alexander Lachenmaier: The original question wasn't clear. The OP showed a method, which replies a vector and asked, how to get a scalar. But when all we see is the code to produce a vector, it is impossible to guess, what it wanted instead.
Therefore I'm astonished, that you have "the same problem". Prefer to open a new thread and explain the details of your code.

Sign in to comment.

Categories

Find more on Graphics Object Programming in Help Center and File Exchange

Tags

Products


Release

R2020a

Community Treasure Hunt

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

Start Hunting!