MATLAB Simulink fprintf logical values

31 views (last 30 days)
Tan Biru
Tan Biru on 25 Aug 2014
Answered: Michael Haderlein on 25 Aug 2014
Greetings,
May I know what is the suitable formatSpec for type 'logical'? I am running this in Simulink, Matlab 2014a.
The code:
a1 = (u > min_u); fileID = fopen('C:\Users\Desktop\myfile.txt','a'); printing = '(u > min_u) = %s'; fprintf(fileID,printing, a1); fclose(fileID);
But this returns: "An argument corresponding to the conversion character 'u' in the 'formatSpec' parameter is of type 'logical'. For code generation cast this input to 'uint8', 'uint16', 'uint32' or 'uint64'."
I have tried all possible formatSpecs as in http://www.mathworks.co.uk/help/matlab/ref/fprintf.html, but I received similar errors.
Please help. Thank you.
Regards,
Biru

Answers (1)

Michael Haderlein
Michael Haderlein on 25 Aug 2014
I think the easiest way is to write a tiny subfunction which converts a logical true and a false to the strings "true" and "false".
function str=log2str(a)
if a
str='true';
else
str='false';
end
Then, the statement is fprintf(fileID,printing,log2str(a1)); Your printing format is fine then.

Community Treasure Hunt

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

Start Hunting!