MATLAB Answers

fprintf for logical statement

303 views (last 30 days)
James Connor
James Connor on 30 Nov 2015
Edited: Sindar on 9 Jan 2020
im trying to write a single code for an fprintf.
Say I have x=1.9712 nh=0.3224 converged=true (or sometimes false)
I have written so far
fprintf('x is %d nh is %d converged is %d./n',x,nh,converged)
which results in, x is 1.971166e+00 nh is 3.223800e-01 converged is 1./nK>>
If converged=true, I would like it to say something like x is 1.971.. nh is 3.223... convergence achieved converged=true
If converged is false I would like it to say something like x is 1.971.. nh is 3.223... convergence not achieved converged=false
The fprintf is being called in a loop I would like each time its called to have it written on a new line in the command window because now it produces on the same line.
Thanks for the help.

  0 Comments

Sign in to comment.

Accepted Answer

Jan
Jan on 30 Nov 2015
Edited: Jan on 30 Nov 2015
LogicalStr = {'false', 'true'};
% your loop
fprintf('x is %d nh is %d converged is %s.\n', ...
x, nh, LogicalStr{converged + 1});
Note the \n instead of /n

  1 Comment

James Connor
James Connor on 30 Nov 2015
Thank you so much

Sign in to comment.

More Answers (4)

Christophe LB
Christophe LB on 6 Feb 2018
Edited: Christophe LB on 6 Feb 2018
Also a late answer but "mat2str" does the trick easily.
>> fprintf('x is %d nh is %d converged is %s.\n',x,nh,mat2str(converged))
x is 1.971200e+00 nh is 3.224000e-01 converged is true.

  1 Comment

Sign in to comment.


Thomas Schmidt
Thomas Schmidt on 23 Dec 2017
I know its a late answer, but maybe someone else is searching for this.
So, mostly i am using 'string (x)' to convert a logical into a string (true / false).
example:
>> a = true
a =
logical
1
>> string (a)
ans =
"True"

  1 Comment

Sindar
Sindar on 9 Jan 2020
extra tip if your variable might be 0/1 instead of false/true:
string(~~a)

Sign in to comment.


Steven Lord
Steven Lord on 30 Nov 2015
I don't believe there's a specifier that makes the logical values print out as their string representations. You will need to define a variable that contains the string representation.
if converged
status = 'true';
else
status = 'false';
end
and print that string using %s instead of the last %d. As for the newline, change /n to \n in your call.

  0 Comments

Sign in to comment.


Pedro Busc
Pedro Busc on 26 May 2017
This is so LAME, matlab should convert it internally.

  1 Comment

Jan
Jan on 26 May 2017
Sorry, what? What is lame? Do you have a runtime issue with this method? Do you want fprintf to display 'true', when a logical value is provided? But this is not the way the fprintf library works. If is based on the same base functions as the C version.
The suggest methods have the benefit, that they can show 'true', 'True', 'TRUE', 'On', 'Yes', 'Enabled' or what ever.

Sign in to comment.


Translated by