How can you create event points with continuous data?
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Beck Hunter
le 24 Juin 2021
Commenté : Beck Hunter
le 9 Juil 2021
Hello!
I have made a simpler example to help explain what I am trying to do:-
Lets say you have a time colum vector corresponding to another colum vector y. A plot of this as a graph can be seen in the image attached.
time = [1;2;3;4;5;6;7];
y = [-1;3;4;-2;-3;1;2];
plot(time,y);
I am trying to work out how I would be able to plot the xline (a vertical line) at the point in which the y-value has been negative for two time steps. I have illustrated this on the graph attached.
Is there a way to do this? I am hoping to apply this logic to more complicated graphs in order to automatically determine events occuring.
I have looked at creating a vector such as below and using the movsum function to try and create an if function for two steps being negative, but I am having trouble getting this to work.
mat = [1;1;1;1;1;1;1];
matsum = movsum(mat,2);
Thank you in advance for any insight!
0 commentaires
Réponse acceptée
Sean Brennan
le 24 Juin 2021
Here's a quick method to do this using diff. It's possible to put this all into one compact line, but left it "spread out" here in order to make the steps more clear. Hope this answers your question!
% Use differences to spot change in signs
diff_y = [0; diff(y)];
same_sign_repeated = [0; (diff_y(1:end-1).*diff_y(2:end))>0];
twice_negative = same_sign_repeated.*(y<0);
xline(time(twice_negative>0));
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur 2-D and 3-D Plots dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!