I'm and trying to plot real time data in MatLab and I am having trouble determining how to go about putting time on the x-axis. I tried working with 'datenum', but it seems like to use this you would need a predetermined time.
For example I want to see something like 7:30:25 for each tick..
Can this function be used? Would a different function work better to continually update and plot real time?
Thank you

Réponses (3)

Wayne King
Wayne King le 28 Fév 2012

1 vote

After calling plot() with datenum()
use datetick
datetick('x','HH:MM:SS')
For example:
x = linspace(now, now+1, 12*6+1);
% Create a sample plot
plot(x, (1:length(x)).^2);
datetick('x', 'HH:MM PM')

3 commentaires

Steve
Steve le 28 Fév 2012
Thanks for the quick response Wayne.
But this gives a time of "12:00:00 AM" across the entire axis. I need the plot to show the current time (or as close as possible) of when the point is recorded.
I apologize if this is something simple. I am still somewhat new to MatLab.
Wayne King
Wayne King le 28 Fév 2012
can you give a simple example of your time vector, say 10-20 elements of it and the data. So we can do an example
Steve
Steve le 28 Fév 2012
Maybe I am confused. I don't have a time vector. I was using the example you had illustrated above...I want to plot real time data, so I'm not sure what to put within datenum(). The MatLab help shows a predetermined date.

Connectez-vous pour commenter.

Steve
Steve le 29 Fév 2012

0 votes

Well I thought I found an answer, but I guess I didn't. I tried using 'clock' which produces a 6 element array that starts with year and ends with seconds. This is what I tried:
c=clock
Time = [(int2str(c(4)) ':' int2str(c(5)) ':' int2str(c(6)))]
In the MatLab command window, it works great. It produced a something like 17:13:34 which is exactly what I want. However, when I try to plot this I get an error:
Unexpected MATLAB expression.
Are there any options for plotting time with data that is contiuously updating?

1 commentaire

Walter Roberson
Walter Roberson le 29 Fév 2012
Time = sprintf('%02d:%02d:%02d', c(4), c(5), c(6));
What do you get in the command window if you execute
datestr(linspace(now, now+1, 12*6+1),'HH:MM PM')

Connectez-vous pour commenter.

Steve
Steve le 4 Mar 2012

0 votes

Time = sprintf('%02d:%02d:%02d', c(4), c(5), c(6));
Thanks Walter, this is what I am looking for. However when I try to use this to plot, I get the following error:
??? Error using ==> plot
Invalid first data argument
Error in ==> GRAPH at 10
plot(Time,Out1)
This is what my code looks like:
count = 0;
Out1 = nan(1, 30);
while count < 3
for i = 1 : 30
num1 = rand + 1;
c=clock;
Out1 = [Out1(2:end), num1];
Time = sprintf('%02d:%02d:%02f', c(4), c(5), c(6));
plot(Time,Out1)
pause(0.1);
end
count = count + 1;
end

1 commentaire

KRUNAL
KRUNAL le 12 Août 2014
I have date in column 1 and time in column 2 and data in column three. I want to plot date/time against that data. Can anyone tell me how can I do it?

Connectez-vous pour commenter.

Catégories

Tags

Question posée :

le 28 Fév 2012

Commenté :

le 12 Août 2014

Community Treasure Hunt

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

Start Hunting!

Translated by