I am trying to plot time on the x-axis and on the y an amplitude (in this case 1 as an example) in the following format: however, following code breaks and an attempt to google led to datetime and prefixing that to the time format of not work nor did datestr
Plot([00:02:37.96469 00:02:38.93659], [1 1], bx)

댓글 수: 4

Adam Danz
Adam Danz 2019년 8월 16일
@ nas , whenever you get an error message, please share the entire copy-pasted message (all of it). We need that info.
We also need to know what version of matlab you're using. You can check that by running ver().
What does your original data look like? How are you trying to convert it to datetime? You'll need to be much more descriptive about what you've tried and why it's not working.
The exact error message is: Input data must be a numerical matrix with three columns or three numerical Arrays
The Matlab version is 2017a.
There is no conversion. I am simply trying to generate a plot with time on the x axis and the y axis at 1.
The x axis has two simple time points as shown in my original post repeated here:
I need the x axis to be time proportional to its values
Plot([00:02:37.96469 00:02:38.93659], [1 1], bx)
Look at this.
>> [00:02:37.96469 00:02:38.93659]
ans =
Columns 1 through 22
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 0 2 4
Columns 23 through 39
6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38
Where did this ">> [00:02:37.96469 00:02:38.93659]<<" come from? Did you just type that in?
nas illmatic
nas illmatic 2019년 8월 16일
Yes that’s the time I want to plot and yes I just typed that in

댓글을 달려면 로그인하십시오.

답변 (1개)

Jess Lovering
Jess Lovering 2019년 8월 14일

0 개 추천

Have you tried to use the duration function?
plot(duration({'00:02:37.96469', '00:02:38.93659'}), [1 1], 'bx')

댓글 수: 8

nas illmatic
nas illmatic 2019년 8월 16일
I tried this today. However it does not work. It produces an error stating the duration function requires ‘three columns’
That was changed in later releases; in your release
duration(0, 2, [37,38], [96469,93659]/100)
Adam Danz
Adam Danz 2019년 8월 16일
편집: Adam Danz 2019년 8월 16일
@nas, we need (much) more information.
The conversion Jessica provided is fully functional.
duration({'00:02:37.96469', '00:02:38.93659'})
ans =
1×2 duration array
00:02:37 00:02:38
You mentioned "I just typed [the timestamps] in". If you typed them in as strings, this should work. We can't provide much help if we have no idea what type of data you're working with.
Could you show us your timestamps? The examples you showed previously are not matlab syntax.
Walter Roberson
Walter Roberson 2019년 8월 16일
nas mentioned R2017a, at which time duration() did not accept character vectors for the time specification.
Adam Danz
Adam Danz 2019년 8월 16일
Ah, I didn't catch that.
nas illmatic
nas illmatic 2019년 8월 17일
편집: nas illmatic 2019년 8월 17일
I found a Matlab 2018b computer and yes, the first and the second commands (listed below) both work - Thanks. However, the only issue now is that the x-axis label does not populate correctly. It simply states "00:02:38" - It appears it is rounding to the nearest minute - anyway to have the x-axis show the seconds.
plot(duration({'00:02:37.96469', '00:02:38.93659'}), [1 1], 'bx')
plot(duration(0,2, [37,38],[96469,93659]/100),[1 1],'bx')
tr = duration(0,2, [37,38],[96469,93659]/100, 'Format', 'mm:ss.SSSSSS');
plot(tr, [1 1], 'bx')
I use 2019a so I am not sure if this will be the same, but I am able to change the x-axis format with this command:
h = gca;
h.XAxis.TickLabelFormat = 'mm:ss.SSSSSS';

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Dates and Time에 대해 자세히 알아보기

제품

릴리스

R2017a

태그

질문:

2019년 8월 14일

댓글:

2019년 8월 19일

Community Treasure Hunt

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

Start Hunting!

Translated by