Using plot with dates stored in a cell array

4 Ansichten (letzte 30 Tage)
Askic V
Askic V am 6 Mai 2022
Kommentiert: Askic V am 6 Mai 2022
Hello Matlab experts,
I need your help plotting a price of some item on different days.
I have a cell array called dates with dates stored as strings (actually char) in the follwoing format: '1/22/20'
I also have an array of double with prices called prices. Lengths of these two arrays are of course identical. Now, I would like to plot the prices on different dates (as bars). If I use datetime, the date is converted to the year 0020. So,how to use plot function to plot dates on x axis and prices on y axis? Thank you very much.
>> class (dates{1})
ans =
char
>> datetime(dates{1})
ans =
22-Jan-0020
>> dates{1}
ans =
1/22/20

Akzeptierte Antwort

Star Strider
Star Strider am 6 Mai 2022
I get a different result —
i = 1;
dates{i} = '1/22/20';
dtv = datetime(dates{i}, 'InputFormat','MM/dd/yy')
dtv = datetime
22-Jan-2020
That appears to be correct.
This should lalso work in recent versions of MATLAB. See Date and Time from String Array for details.
.

Weitere Antworten (2)

Voss
Voss am 6 Mai 2022
Here's one way to add 2000 to the years
dates = {'1/22/20','1/23/20','1/24/20','1/25/20'};
new_dates = datetime(regexprep(dates,'\d+$','${sprintf(''%d'',str2double($0)+2000)}'))
new_dates = 1×4 datetime array
22-Jan-2020 23-Jan-2020 24-Jan-2020 25-Jan-2020
Then you can use them in plot or bar or whatever.
prices = [100 101 98 94];
bar(new_dates,prices)
hold on
plot(new_dates,prices,'-ro','LineWidth',2)

Askic V
Askic V am 6 Mai 2022
Thank you, I didn't know how to call datetime function properly. 'InputFormat','MM/dd/yy' is the answer I was looking for.
dates =
1×5 cell array
{'1/21/20'} {'1/22/20'} {'1/23/20'} {'1/24/20'} {'1/25/20'}
>> datetime(dates)
ans =
1×5 datetime array
21-Jan-0020 22-Jan-0020 23-Jan-0020 24-Jan-0020 25-Jan-0020
>> dtv = datetime(dates, 'InputFormat','MM/dd/yy')
dtv =
1×5 datetime array
21-Jan-2020 22-Jan-2020 23-Jan-2020 24-Jan-2020 25-Jan-2020
  2 Kommentare
Voss
Voss am 6 Mai 2022
Well, that's certainly easier than my solution!
Askic V
Askic V am 6 Mai 2022
Yes, but your solution is really very creative.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Dates and Time finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by