필터 지우기
필터 지우기

How can I force MatLab to display integers in function sprintf ?

조회 수: 14 (최근 30일)
Julia
Julia 2014년 6월 10일
댓글: Stephen23 2015년 3월 3일
Hi,
I would like to save graphs in a loop and use sprintf to change the file names, but don't want to have decimal places because this destroys the file extension. The loop is:
for i=1:5
x = [0 ; 0.44; 1.1; -1,1; -0.44];
sprintf('Graph %2d.png',x(i)*100)
end
When I use x(3) =1.1 sprintf('Graph %2d.png',x*100) gets displayed as " Graph 1.100000e+02 ". The same problem does not occur with sprintf('Graph %2d.png',110). If x = 0.44 is also works fine. How can I force MatLab to display integers for every number?
Thanks for your help!!

채택된 답변

the cyclist
the cyclist 2014년 6월 10일
Due to the limits of floating point arithmetic, 1.1*100 is not precisely represented as 110.
You could try
round(x(i)*100)
  댓글 수: 3
Sean de Wolski
Sean de Wolski 2014년 6월 10일
I recommend using the '%04i' syntax which will maintain alphabetical order:
sprintf('%03i',6)
Stephen23
Stephen23 2015년 3월 3일
Actually sprintf already preforms a round operation internally, so adding an explicit round is unnecessary and just slows it down. If you want to guarantee that the output does not use exponent notation, then %.0f format is best:
>> sprintf('%03.0f',456.9)
ans = 457
Note the rounding!

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

추가 답변 (1개)

Devaraja Lakshmanappa
Devaraja Lakshmanappa 2015년 3월 3일
I had used mprintf function in my program,but i am getting error saying this function is not there in matlab7.0.2.

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by