Struggling to plot the data over timestamps!
29 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
muhammad choudhry
el 7 de En. de 2022
Comentada: Jon
el 7 de En. de 2022
Hi,
I have data capture with timestamps, I am plotting the data over time stamps, can anyone help as I am struggling to plot it. I pasted the data down below as I reached my limit of sharing files.
Code:
files = ['F:\3-PIV_Experimental_Data\Outlet_110\Data_LaserSheet_D\Data_Head\Data_Raw\Head_Timestamps.xlsx'];
a = readtable(files);
x = a{:,1};
y = a{:,2};
figure()
plot(x,y)
Error:
Error using plot
Invalid data argument.
Error in TimeStamps (line 8)
plot(x,y)
Data:
TimeStamps Head(mm)
13:31:39 0
13:31:49 8.1
13:31:59 15.3
13:32:09 24.4
13:32:19 30.8
13:32:29 38.3
13:32:39 44
13:32:49 50.4
13:32:59 57.6
13:33:09 63.4
13:33:19 68.7
13:33:29 74.1
13:33:39 78.9
13:33:49 83.5
13:33:59 88.3
13:34:09 93.1
13:34:19 97.4
13:34:29 102.1
13:34:39 105.7
13:34:49 109.6
13:34:59 113.6
13:35:09 117
13:35:19 120.3
13:35:29 123.5
13:35:39 127
13:35:49 130.2
13:35:59 133.3
13:36:09 136.2
13:36:19 139.3
13:36:29 142.4
13:36:39 145.5
13:36:49 147.8
13:36:59 150.5
13:37:09 153.4
13:37:19 156
13:37:29 158.7
13:37:39 161
13:37:49 163.4
13:37:59 166
13:38:09 168.5
13:38:19 171.5
13:38:29 174
13:38:39 176.8
13:38:49 179
13:38:59 181.8
13:39:09 184.3
13:39:19 186.9
13:39:29 189.5
13:39:40 192.6
13:39:50 195.2
13:40:00 197.9
13:40:10 200.8
13:40:20 203.1
13:40:30 206
13:40:40 209.4
13:40:50 212
13:41:00 215.4
13:41:10 217.8
13:41:20 221.4
13:41:30 224.4
13:41:40 227.3
13:41:50 230.2
13:42:00 232.8
13:42:10 235.9
13:42:20 238.8
13:42:30 242
13:42:40 244.1
13:42:50 247.2
13:43:00 250.6
13:43:10 253.7
13:43:20 257
13:43:30 259.6
13:43:40 262.8
13:43:50 265.8
13:44:00 269.2
13:44:10 272.4
13:44:20 275.7
13:44:30 278.5
13:44:40 281.6
13:44:50 284.8
13:45:00 288.3
13:45:10 291.5
13:45:20 294.6
13:45:30 297.5
13:45:40 300.8
13:45:50 304.2
13:46:00 307.1
13:46:10 309.9
13:46:20 314
13:46:30 316.9
13:46:40 320.5
13:46:50 323.8
13:47:00 327.1
13:47:10 330.5
13:47:20 334.1
13:47:30 337.7
13:47:40 340.6
13:47:50 344.2
13:48:00 347.3
13:48:10 350.9
13:48:20 354.2
13:48:30 357.6
13:48:40 361.3
13:48:50 364.5
13:49:00 367.9
13:49:10 371.2
13:49:20 374.5
13:49:30 378.1
13:49:40 381
13:49:50 384.1
13:50:00 387.5
13:50:10 390.8
13:50:20 394.1
13:50:30 397
13:50:40 399.9
13:50:50 403.2
13:51:00 406.3
13:51:10 409.3
13:51:20 412.4
13:51:30 415.5
13:51:40 418.6
13:51:50 421.5
13:52:00 424.6
13:52:10 428.4
13:52:20 431.5
13:52:30 434.1
13:52:40 437
13:52:50 440.1
13:53:00 443
13:53:10 445.6
13:53:20 448.3
13:53:30 451.1
13:53:40 454.2
13:53:50 456.8
13:54:00 459.8
13:54:10 462.6
13:54:20 465.2
13:54:30 468.3
13:54:40 470.8
13:54:50 473.6
13:55:00 476.2
13:55:10 478.9
13:55:20 481.7
13:55:30 484.4
13:55:40 487.2
13:55:50 489.7
13:56:00 492.3
13:56:10 495.1
13:56:20 497.8
13:56:30 500
13:56:40 502.4
13:56:50 502.6
1 comentario
Jon
el 7 de En. de 2022
Editada: Jon
el 7 de En. de 2022
Does the script I provided along with the Excel file I attached run correctly for you? If so then you have to look at what other differences there may be between my Excel file and yours. I am running R2021b.
Alternatively, reading in from the Excel sheet, just using readtable, as you have done in your origina post gives you serial date number values. You can convert these to datetime array values and plot as follows
files = ['Head_Timestamps.xlsx'];
a = readtable(files);
x = a{:,1};
y = a{:,2};
% convert timestamp numerical values to datetime array
t = datetime(x,'ConvertFrom','datenum');
figure
plot(t,y)
which gives the following (MATLAB doesn't know what month or year is plotted so it gives Dec31,-1) if this bothers you, it could probably be cleaned up with a little more work
Respuesta aceptada
Star Strider
el 7 de En. de 2022
I am resisting the temptation to copy all of those, that should be in a text or spreadsheet file and attached here, anyway.
If the time stamps are read in as character arrays (they should be), this should work —
C = {'13:31:39' 0
'13:31:49' 8.1
'13:31:59' 15.3
'13:32:09' 24.4
'13:32:19' 30.8
'13:32:29' 38.3
'13:32:39' 44
'13:32:49' 50.4
'13:32:59' 57.6};
a = table(C(:,1),cell2mat(C(:,2)), 'VariableNames',{'TimeStamps', 'Head(mm)'}) % Replaces The 'readtable' Call
a.TimeStamps = datetime(a.TimeStamps, 'InputFormat','HH:mm:ss', 'Format','HH:mm:ss')
VN = a.Properties.VariableNames;
figure
plot(a.TimeStamps, a.('Head(mm)'))
grid
xlabel(VN{1})
ylabel(VN{2})
Experiment as necessary to get the desired result.
.
4 comentarios
Jon
el 7 de En. de 2022
When I made a simple example using the attached .xlsx file and read the data in using (following the OP's example which I was trying to reproduce the problem with)
files = ['Head_Timestamps.xlsx'];
a = readtable(files);
x = a{:,1};
y = a{:,2};
I found that the resulting time values, x, were serial datenumbers (fractions of a 24 hour day). Do you know why they didn't get read in as a character array, as it looks like you expected?
Thanks,
Jon
Más respuestas (1)
Jon
el 7 de En. de 2022
I copied and pasted your data into an .xlsx file (attached here) and ran your commands (only modified to have the .xlsx file in the local directory)
files = ['Head_Timestamps.xlsx'];
a = readtable(files);
x = a{:,1};
y = a{:,2};
figure()
plot(x,y)
and got the following plot, without errors. So I am unable to reproduce your problem. Maybe there some difference in formatting or something like that between my .xlsx file and the one you are using. Please have a look and see if you can make a small self contained example to reproduce the problem.
I'm not sure what you mean by having "reached your limit of sharing files", but you should be able to attach a small .xlsx file as I have here. Please attach a small file that reproduces your problem. Also, I suggest using the code button on the MATLAB answers toolbox to get your code nicely formatted, and to make it easy to cut and paste out of the post.
Ver también
Categorías
Más información sobre Data Import and Analysis en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!