Excel sheet time data defaulting to January 1st, 1970 on plot

5 次查看(过去 30 天)
I am importing excel sheeting to MatLab with time (MM-dd-yyyy HH-mm) in the first column and voltage data in the second column. When I go to plot this data, the x-axis (time) defaults to January 1st, 1970. How do I go about fixing this? The date my excel data starts on is December 1st, 2021.
I have been using the datetime function but think it may need to be tweaked.
  1 个评论
Steven Lord
Steven Lord 2022-1-11
Please show us how you imported the data from the spreadsheet and how you used datetime as part of the process of preparing your data. Did you use readtable on your spreadsheet? If not did you use datetime to 'ConvertFrom', 'Excel' the data you read from the file?

请先登录,再进行评论。

采纳的回答

Star Strider
Star Strider 2022-1-11
My best guess is that datetime is not interpreting the time column correctly.
It would need to be something like this:
time = '12-01-2021 00-01'
time = '12-01-2021 00-01'
dttime = datetime (time, 'InputFormat','MM-dd-yyyy HH-mm', 'Format','yyyy/MM/dd HH:mm')
dttime = datetime
2021/12/01 00:01
Use the appropriate string for the 'Format' name-value pair depending on how the result is to be displayed.
.
  3 个评论
notalwayssure
notalwayssure 2022-1-11
I believe I have found the issue. Hidden in the thousands of rows of data, I have random rows like the one shown in bold below. I went through and manually deleted them and the code runs smoothly. Must have stemmed from software output during testing.
12/20/2021 13:10:00
12/20/2021 13:10:01
12/20/2021 13:10:02
01/11/1970 15:40:00
12/20/2021 13:10:03
Is there a way (maybe an if..then loop) I could neglect all of the rows that have data in the year 1970 so that the code passes over them and I don't have to do a manual deletion in Excel.
Star Strider
Star Strider 2022-1-11
I would use ‘logical indexing’ to eliminate the 1970 values —
time = ['12/20/2021 13:10:00'
'12/20/2021 13:10:01'
'12/20/2021 13:10:02'
'01/11/1970 15:40:00'
'12/20/2021 13:10:03'];
dt_time = datetime(time, 'InputFormat','MM/dd/yyyy HH:mm:ss')
dt_time = 5×1 datetime array
20-Dec-2021 13:10:00 20-Dec-2021 13:10:01 20-Dec-2021 13:10:02 11-Jan-1970 15:40:00 20-Dec-2021 13:10:03
year_not_1970 = year(dt_time) ~= 1970;
dt_time_new = dt_time(year_not_1970)
dt_time_new = 4×1 datetime array
20-Dec-2021 13:10:00 20-Dec-2021 13:10:01 20-Dec-2021 13:10:02 20-Dec-2021 13:10:03
Using this in a table would require a second dimension reference —
T = table(dt_time, randn(size(dt_time)))
T = 5×2 table
dt_time Var2 ____________________ _______ 20-Dec-2021 13:10:00 1.0861 20-Dec-2021 13:10:01 0.13509 20-Dec-2021 13:10:02 1.1776 11-Jan-1970 15:40:00 1.4696 20-Dec-2021 13:10:03 0.37878
T_new = T(year_not_1970,:)
T_new = 4×2 table
dt_time Var2 ____________________ _______ 20-Dec-2021 13:10:00 1.0861 20-Dec-2021 13:10:01 0.13509 20-Dec-2021 13:10:02 1.1776 20-Dec-2021 13:10:03 0.37878
or something similar.
.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Data Import from MATLAB 的更多信息

产品


版本

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by