MATLAB Simulink fprintf logical values

2 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.

Categories

Find more on Modeling in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!