Azzera filtri
Azzera filtri

How to determine when the values in an array settle to a value within specified margins.

14 visualizzazioni (ultimi 30 giorni)
Im trying to find out when data output from simulink reaches a settled state, or settling time i guess of +- 2 percent.
Using find gets me the indeces of the data that fall in that region ie:
settlingTime = find(SimData{2} > 0.98 & SimData{2} < 1.02 );
Id like to know if theres a way to determine at what point the settlingTime array no longer jumps values, or when it no longer overshoots that 2 percent. At that point settlingTime should just count up by 1 from when the data no longer exceeds the margins until the end of the data.
To generalize, if i have an array, is there a way to extrant the index of the array where after that index the data incriments by 1, or i guess a specified pattern.
Thanks for any help that can be offered

Risposta accettata

Voss
Voss il 21 Feb 2022
It sounds like you're going for something like this:
is_settled = SimData{2} > 0.98 & SimData{2} < 1.02;
if is_settled(end)
settled_idx = 1+find(~is_settled,1,'last');
else
settled_idx = [];
end

Più risposte (0)

Categorie

Scopri di più su Startup and Shutdown in Help Center e File Exchange

Prodotti


Release

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by