What is wrong with my fprintf?
12 views (last 30 days)
Show older comments
I am trying to print out the value of y to be 6 decimals, if I type it as format long or short it pops out those lengths. I am trying to make as many decimals places as D, but the default is 6 if not declared.
function y=atan_approx(x,D)
y=0;
n=1;
k=1;
if nargin==1,D=6,disp('Value of D was set to 6'), end
while n<100
y=y+(x.^n./n).*k;
n=n+2;
k=k*-1;
end
fprintf('The value of the approximation is %10.Df\n',y)
z=-1:0.01:1;
plot(z, atan(z),'--g')
hold
plot(x,y,'ro')
end
>>format long
>>atan_approx(0.5,7)
The value of the approximation is current plot held
ans =
0.4636476090086
if i make it format short the ans is 0.4636
0 Comments
Answers (2)
Walter Roberson
on 5 Feb 2017
fprintf('The value of the approximation is %10.6f\n',y)
Your %10.Df uses an invalid format specifier, 'D', so that ends printing out on that line. Then the "current plot held" is coming from the "hold" command you have.
0 Comments
per isakson
on 6 Feb 2017
Edited: per isakson
on 6 Feb 2017
"What is wrong with my fprintf?"   I assume that you intend to control the number of decimals places with the variable D. Here are two format specifiers, which do that. (Look up the help on fprintf. )
>> cssm( pi, 5 )
The value of the approximation is 3.14159
Or with a parameterized specifier 3.14159
>>
where
function cssm( y, D )
frmt = sprintf( 'The value of the approximation is %%10.%df\n', D );
fprintf( frmt, y );
fprintf( 'Or with a parameterized specifier %10.*f\n', D, y );
end
0 Comments
See Also
Categories
Find more on Line Plots 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!