fprintf for logical statement

조회 수: 212 (최근 30일)
James Connor
James Connor 2015년 11월 30일
편집: Sindar 2020년 1월 9일
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.

채택된 답변

Jan
Jan 2015년 11월 30일
편집: Jan 2015년 11월 30일
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

추가 답변 (4개)

Christophe LB
Christophe LB 2018년 2월 6일
편집: Christophe LB 2018년 2월 6일
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.

Thomas Schmidt
Thomas Schmidt 2017년 12월 23일
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
Sindar
Sindar 2020년 1월 9일
편집: Sindar 2020년 1월 9일
extra tip if your variable might be 0/1 instead of false/true:
string(~~a)

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


Steven Lord
Steven Lord 2015년 11월 30일
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.

Pedro Busc
Pedro Busc 2017년 5월 26일
This is so LAME, matlab should convert it internally.
  댓글 수: 1
Jan
Jan 2017년 5월 26일
편집: Jan 2017년 5월 26일
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.

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

카테고리

Help CenterFile Exchange에서 Data Type Conversion에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by