Effacer les filtres
Effacer les filtres

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

14 vues (au cours des 30 derniers jours)
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

Réponse acceptée

Voss
Voss le 21 Fév 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

Plus de réponses (0)

Catégories

En savoir plus sur Startup and Shutdown dans Help Center et File Exchange

Produits


Version

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by