Retrieve the time that a certain value is reached within a time series.

I am running a Simulink model and am changing constant to see how the system responds. I want to know what time the system reaches a certain value at each of the constants. I have same the time series to the work space but can not figure out how to extract the time at which the value becomes true.

 Accepted Answer

A simple way is to extract the data and the time as arrays
% create example data
d=1:100;
t=d/100;
ts = timeseries(d,t);
% define threshold
thr = 55;
data = ts.data(:);
time = ts.time(:);
ind = find(data>thr,1,'first');
time(ind) %time where data>threshold

3 Comments

I was able to seperate the data and the time into 2 different vectors but when I make 'ind' the answer is an empty 1x0 matrix.
>> speed=N.data(:); >> time=N.time(:); >> thr=max(N)
thr =
7.9999e+04
>> ind=find(speed>thr,1,'first')
ind =
Empty matrix: 0-by-1
Figured it out, the value i was looking for ended up being the max value so the vector never became greater than it so i needed to turn
ind = find(data>thr,1,'first');
to
ind = find(data=>thr,1,'first');
Thank you so much goerk. This answer is truly helpful!

Sign in to comment.

More Answers (1)

Hi, excelent way to find a value in vectors. I'm doing something similar. While I'm running the simulation (in real time) I would like to get the especific time when a diferent signal change to a especific value. I have tried to edit what your writed but with bad results. I suppose because the dimentions of the time and the voltage signals are changing while the simulation is running. Please help me!

Categories

Products

Asked:

on 12 Jan 2016

Answered:

on 13 Jan 2019

Community Treasure Hunt

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

Start Hunting!