Convert minute date (stock data) to matlab from .csv

1 view (last 30 days)
Dear all,
I've fairly new to MATLAB. Used it in a course Numerical Mathematics but we didn't have to import any data but only using it for calculations.
Well, now I have a vector with the following timedate structure: 26.01.2017 17:45:00.000,
I want this converted to a numerical vector so that I can plot the data and use it in a table or matrix with the rest of the variables (Open, Close, Volume).
I've read and tried to apply datenum and datestr but it didn't led to a succes.
I also have a problem with decimals when I import data and plot these.
I thank you in advance

Accepted Answer

Peter Perkins
Peter Perkins on 26 Jun 2017
If you are using a recent version of MATLAB, R2014b or later, it's likely you will be much happier using datetimes, rather than converting to a numeric value such as a serial date number. And if you are using R2016b or later, take a look at timetables.
To answer your specific question:
>> datetime('26.01.2017 17:45:00.000','Format','dd.MM.yyyy HH:mm:ss.SSS')
ans =
datetime
26.01.2017 17:45:00.000
  2 Comments
F. Bondeau
F. Bondeau on 26 Jun 2017
This worked and I thank you kindly for it. Just another question though: any idea how I can store the datetime variable with other numeric variables into a timetable?
Is this preferable?
Cheers!
Peter Perkins
Peter Perkins on 27 Jun 2017
In a timetable, you'd use the times to label each row, as the "row times". A timtable, like a table, allows you to put different data types in one rectangular array, with homogeneity enforced vertically (so not like a completely unconstrained cell array). The thing that's special about a timetable is that each row is labelled with a timestamp, either a datetime or a duration.

Sign in to comment.

More Answers (2)

markusha
markusha on 25 Jun 2017
datenum('26.01.2017 17:45:00.000','dd.mm.yyyy HH:MM:SS.FFF') works for me.

Peter Perkins
Peter Perkins on 26 Jun 2017
Try this:
>> d = datetime(2017,06,12,13,31,60*sort(rand(10000,1)),'Format','dd-MM-yyyy HH:mm:ss.SSS');
>> x = randn(size(d));
>> plot(d(100:200),x(100:200))
Actually, there may bnot even be a compelling reason to plot a subset of the data, the plot lets you zoom in and the tick labels adjust their format automatically.

Categories

Find more on Dates and Time in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!