plot Datetime on x Axes

95 views (last 30 days)
MoHa on 9 Mar 2020
Hello! I have a endless while loop, that generates every 20 min a number. I'm trying to figure out how to plot the data with the dates on the x axis and numbers on the Y.
how can i plot the date and time on x axes?
I'm pretty new to Matlab, would really appreciate any help!

Answers (1)

Benjamin Großmann
Benjamin Großmann on 9 Mar 2020
There are mainly 2 possibilities
  1. You can use datetick() to format your x axis ticks to date or time values
  2. You can define your x-values as datetime() and the plot command automatically formats your x-axis with dateticks
For a mwe, we can assume that we start "now" and are collecting data for 12 hours resutling in a time vector t
t = datetime('now'):minutes(20):datetime('now')+hours(12);
y = rand(size(t));
plot(t, y)
You can also append t with the current time
t = []; % initialization
% ...
% ...
% ...
% every iteration / callback
t(end+1) = datetime('now');
As you are new to matlab, i would also recommend not to use a "endless while loop, that generates every 20 min a number". Have a look at the timer class. With the timer class you can define an instance of the timer which calls a function (schedules) every 20 minutes "in the background". Please let me know if you need help with that.
Benjamin Großmann
Benjamin Großmann on 9 Mar 2020
You can set the timer interval via the period property of the timer class. See line 9 in my first code snippet.
First, write a function and put everything inside the function which should be evaluated with the specified rate. This is going to be your timerFcn. Please note that a timer fcn (and other callbacks) must have an input argument for the source and event. You can add additional arguments and pass values to those callbacks like i did with the myCloseRequestFcn().
If you want to store data, you can use the UserData of the timer class as I did with the x data, y data and so on.
Then you just have to adapt the definition of the timer instance from my first code snippet.
If you can post a mwe of your problem, than I can try my best to support you with the timer function.

Sign in to comment.




Community Treasure Hunt

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

Start Hunting!