MATLAB: Convert a date into seconds from a string from a block “constant”

dateMATLAB and Simulink Student Suiteseconds

I am trying to convert a date in the form 'DD.MM' – set in a constant block – into seconds in Simulink (so that the user can change it quickly). I found the following guidelines to solve the issue by it still does not get through. 1. In the block I entered uint8(DD/MM) 2. Here is the code in the function: function seconds = fcn(date) coder.extrinsic('sscanf'); coder.extrinsic('datenum'); seconds=0; sscanf(date,'%d.%d'); seconds= datenum(date,24); end
I got the following error: "First argument must be a string."
Any hint?.

Best Answer

The error that is being generated is due to the following line of code:
sscanf(date,'%d.%d');
The 'date' variable comes out of the constant block as a 'double' variable so it needs to be type casted to a 'string' in order to be used by 'sscanf'.
In Simulink, the constant block cannot output 'string' variables as described in the following documentation page: https://www.mathworks.com/help/simulink/slref/constant.html#bslolcd-1
One thing to note is that 'DD/MM' in a constant block will return the result of the division.