Matlab Coder error : converting datetime Format error

조회 수: 1 (최근 30일)
YunJung Choi
YunJung Choi 2022년 12월 12일
편집: VBBV 2022년 12월 14일
I have a problem about Matlab Coder... Actually, The code is correctly run in Matlab, but I want to use Matlab coder. Coder makes error, when I want to change datetime Format. For example, variable DateTime is type of datetime, 2017-05-01 00:00, 2017-05-01 00:15, ...... 2017-09-30 23:45 and I want to change it only year and date like, 20170501, 20170501, ...... , 20170930. That's why I make the code in matlab, d1 = datetime(DateTime, 'Format', 'uuuuMMdd');
DateTime = table2array(datatable(1:row/4,1)); % 2017-05-01 00:00, 2017-05-01 00:15, ...... 2017-09-30 23:45 d1 = datetime(DateTime, 'Format', 'uuuuMMdd'); % 20170501, 20170501, ...... , 20170930
In Matlab, it works correctly. But Matlab Coder can't call the function. I want to know how I can solve this problem...TT

채택된 답변

VBBV
VBBV 2022년 12월 12일
Use the dateType argument for the datetime function
d1 = datetime(DateTime, 'dateType', 'yyyymmdd'); % use the dateType argument
instead of
d1 = datetime(DateTime, 'Format', 'uuuuMMdd'); % 20170501, 20170501, ...... , 20170930
  댓글 수: 4
YunJung Choi
YunJung Choi 2022년 12월 13일
In the table, there is datetime type. That's why I use table2array... Because value of type 'datetime' in the table, it can't be convertible to 'cell'.
I have a problem only in Matlab Coder... I want to convert from matlab code to c code. Actually my original code has no problem in matlab, but it happens only when I use Matlab Coder codegen...TT Is the correct solution for Matlab Coder?? TT
VBBV
VBBV 2022년 12월 14일
편집: VBBV 2022년 12월 14일
Ok, for some reason, Matlab coder doesnt support datetime functions
D = datetime({'2017-05-01 00:00', '2017-05-01 00:15'})
D = 1×2 datetime array
01-May-2017 00:00:00 01-May-2017 00:15:00
T = table(D,'VariableNames',{'D'})
T = table
D __________________________________________ 01-May-2017 00:00:00 01-May-2017 00:15:00
DateTime = table2array(T);
d1 = datetime(DateTime, 'Format', 'uuuuMMdd')
d1 = 1×2 datetime array
20170501 20170501

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

추가 답변 (1개)

C B
C B 2022년 12월 12일
편집: C B 2022년 12월 12일
Can you try this once
d1 = datestr(datetime, 'yyyymmdd')
d1 = '20221212'
  댓글 수: 1
YunJung Choi
YunJung Choi 2022년 12월 13일
it still doesn't work... alarm that codegen is not supported datestr method.

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

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

제품


릴리스

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by