What is wrong with my fprintf?

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

Antworten (2)

Walter Roberson
Walter Roberson am 5 Feb. 2017

0 Stimmen

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.
per isakson
per isakson am 6 Feb. 2017
Bearbeitet: per isakson am 6 Feb. 2017

0 Stimmen

"What is wrong with my fprintf?" &nbsp 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

Kategorien

Mehr zu Line Plots finden Sie in Hilfe-Center und File Exchange

Gefragt:

am 5 Feb. 2017

Bearbeitet:

am 6 Feb. 2017

Community Treasure Hunt

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

Start Hunting!

Translated by