Matlab Coder error : converting datetime Format error

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일
편집: YunJung Choi 2022년 12월 13일
TT it doesn't not work in matlab...TT Coder also...TT The error report said that 'Undefinded function or variable 'processedVarArgin'. The first assignment to a local variable determines its class.'
VBBV
VBBV 2022년 12월 13일
편집: VBBV 2022년 12월 13일
it seems you are converting table data to array. Convert the table data to cell array as shown below and then use the Format argument
DateTime = table2cell(datatable(1:row/4,1))); % convert the table data to cell array
d1 = datetime(DateTime, 'Format', 'yyyyMMdd'); % use the Format argument
Use MM to represent month instead of mm which represents minutes
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
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개)

Chetan Bhavsar
Chetan Bhavsar 2022년 12월 12일
편집: Chetan Bhavsar 2022년 12월 12일
Can you try this once
d1 = datestr(datetime, 'yyyymmdd')
d1 = '20221212'

댓글 수: 1

it still doesn't work... alarm that codegen is not supported datestr method.

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

카테고리

도움말 센터File Exchange에서 Logical에 대해 자세히 알아보기

제품

릴리스

R2022b

질문:

2022년 12월 12일

편집:

2022년 12월 14일

Community Treasure Hunt

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

Start Hunting!

Translated by