[statistics] imporved code style
This commit is contained in:
parent
08382f94d4
commit
e1c6c32db0
@ -304,7 +304,7 @@
|
|||||||
%
|
%
|
||||||
\newboolean{showexercisesolutions}
|
\newboolean{showexercisesolutions}
|
||||||
\setboolean{showexercisesolutions}{true}
|
\setboolean{showexercisesolutions}{true}
|
||||||
\newcommand{\exercisesolutions}{end} % 0: here, 1: chapter, 2: end
|
\newcommand{\exercisesolutions}{here} % 0: here, 1: chapter, 2: end
|
||||||
% we need this also as numbers:
|
% we need this also as numbers:
|
||||||
\ifthenelse{\equal{\exercisesolutions}{end}}{\newcommand{\exercisesolutionsnum}{2}}{%
|
\ifthenelse{\equal{\exercisesolutions}{end}}{\newcommand{\exercisesolutionsnum}{2}}{%
|
||||||
\ifthenelse{\equal{\exercisesolutions}{chapter}}{\newcommand{\exercisesolutionsnum}{1}}{%
|
\ifthenelse{\equal{\exercisesolutions}{chapter}}{\newcommand{\exercisesolutionsnum}{1}}{%
|
||||||
|
@ -43,7 +43,7 @@ filllw = 1.0
|
|||||||
fillec = colors['white']
|
fillec = colors['white']
|
||||||
fillalpha = 0.4
|
fillalpha = 0.4
|
||||||
filledge = {'linewidth': filllw, 'joinstyle': 'round'}
|
filledge = {'linewidth': filllw, 'joinstyle': 'round'}
|
||||||
if int(mpl.__version__.split('.')[0]) < 2:
|
if mpl_major < 2:
|
||||||
del filledge['joinstyle']
|
del filledge['joinstyle']
|
||||||
|
|
||||||
# helper lines:
|
# helper lines:
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
% check whether the median returned by mymedian
|
% check whether the median returned by mymedian
|
||||||
% really separates a vector into two halfs
|
% really separates a vector into two halfs
|
||||||
for i = 1:140 % loop over different length
|
for i = 1:140 % loop over different length
|
||||||
for k = 1:10 % try several times
|
for k = 1:10 % try several times
|
||||||
a = randn( i, 1 ); % generate some data
|
a = randn(i, 1); % generate some data
|
||||||
m = mymedian( a ); % compute median
|
m = mymedian(a); % compute median
|
||||||
if length( a(a>m) ) ~= length( a(a<m) ) % check
|
if length(a(a>m)) ~= length(a(a<m)) % check
|
||||||
disp( 'error!' )
|
disp('error!')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
n = 200;
|
n = 200;
|
||||||
corrs = [ 1.0, 0.6, 0.0, -0.9 ];
|
corrs = [1.0, 0.6, 0.0, -0.9];
|
||||||
for k = [1:length(corrs)]
|
for k = [1:length(corrs)]
|
||||||
r = corrs(k);
|
r = corrs(k);
|
||||||
x = randn(n, 1);
|
x = randn(n, 1);
|
||||||
@ -9,8 +9,8 @@ for k = [1:length(corrs)]
|
|||||||
% compute correlation coefficient of data:
|
% compute correlation coefficient of data:
|
||||||
rho = corr(x, y);
|
rho = corr(x, y);
|
||||||
subplot(2, 2, k)
|
subplot(2, 2, k)
|
||||||
scatter( x, y )
|
scatter(x, y)
|
||||||
text( -2, 2.5, sprintf('r=%.1f', rho) )
|
text(-2, 2.5, sprintf('r=%.1f', rho))
|
||||||
xlabel('x')
|
xlabel('x')
|
||||||
ylabel('y')
|
ylabel('y')
|
||||||
xlim([-3.0, 3.0])
|
xlim([-3.0, 3.0])
|
||||||
|
@ -5,7 +5,7 @@ plot(xs, cdf);
|
|||||||
hold on;
|
hold on;
|
||||||
|
|
||||||
dx = 0.01;
|
dx = 0.01;
|
||||||
xx = [-4:dx:4]; % x-values for Gaussian pdf
|
xx = [-4:dx:4]; % x-values for Gaussian pdf
|
||||||
gauss = exp(-0.5*xx.^2)/sqrt(2.0*pi); % Gaussian pdf
|
gauss = exp(-0.5*xx.^2)/sqrt(2.0*pi); % Gaussian pdf
|
||||||
gausscdf = cumsum(gauss)*dx;
|
gausscdf = cumsum(gauss)*dx;
|
||||||
plot(xx, gausscdf);
|
plot(xx, gausscdf);
|
||||||
|
@ -20,5 +20,5 @@ for i = [1:length(nrolls)]
|
|||||||
bar(b, h, 'facecolor', 'b')
|
bar(b, h, 'facecolor', 'b')
|
||||||
hold off
|
hold off
|
||||||
title(sprintf('N=%d', length(d)))
|
title(sprintf('N=%d', length(d)))
|
||||||
pause( 2.0 )
|
pause(2.0)
|
||||||
end
|
end
|
||||||
|
@ -12,15 +12,15 @@ hold off
|
|||||||
|
|
||||||
% compute integral between x1 and x2:
|
% compute integral between x1 and x2:
|
||||||
P = sum(p((x>=x1)&(x<x2)))*dx;
|
P = sum(p((x>=x1)&(x<x2)))*dx;
|
||||||
fprintf( 'Integral between %.2g and %.2g: %.3g\n', x1, x2, P );
|
fprintf('Integral between %.2g and %.2g: %.3g\n', x1, x2, P);
|
||||||
|
|
||||||
% draw random numbers:
|
% draw random numbers:
|
||||||
r = randn( 10000, 1 );
|
r = randn(10000, 1);
|
||||||
|
|
||||||
% check P:
|
% check P:
|
||||||
Pr = sum((r>=x1)&(r<x2))/length(r);
|
Pr = sum((r>=x1)&(r<x2))/length(r);
|
||||||
fprintf( 'Probability of a number between %.2g and %.2g: %.3g\n', x1, x2, Pr );
|
fprintf('Probability of a number between %.2g and %.2g: %.3g\n', x1, x2, Pr);
|
||||||
|
|
||||||
% infinite integral:
|
% infinite integral:
|
||||||
P = sum(p)*dx;
|
P = sum(p)*dx;
|
||||||
fprintf( 'Integral between -infinity and +infinity: %.3g\n', P );
|
fprintf('Integral between -infinity and +infinity: %.3g\n', P);
|
||||||
|
@ -1,24 +1,24 @@
|
|||||||
% generate data:
|
% generate data:
|
||||||
x = randn( 1, 100000 );
|
x = randn(1, 100000);
|
||||||
|
|
||||||
% histogram:
|
% histogram:
|
||||||
[h,b] = hist( x, 100 );
|
[h,b] = hist(x, 100);
|
||||||
% normalize:
|
% normalize:
|
||||||
bs = b(2)-b(1);
|
bs = b(2)-b(1);
|
||||||
h = h/sum(h)/bs;
|
h = h/sum(h)/bs;
|
||||||
|
|
||||||
% plot:
|
% plot:
|
||||||
bar( b, h );
|
bar(b, h);
|
||||||
xlabel( 'x' );
|
xlabel('x');
|
||||||
|
|
||||||
% median, quartile:
|
% median, quartile:
|
||||||
q = quartiles( x );
|
q = quartiles(x);
|
||||||
%q = quantile( x, [0.25, 0.5, 0.75 ] );
|
%q = quantile(x, [0.25, 0.5, 0.75 ]);
|
||||||
|
|
||||||
% plot:
|
% plot:
|
||||||
hold on;
|
hold on;
|
||||||
bar( b(b<q(1)), h(b<q(1)), 'FaceColor', [0.5 0 0.5] );
|
bar(b(b<q(1)), h(b<q(1)), 'FaceColor', [0.5 0 0.5]);
|
||||||
bar( b((b>=q(1)) & (b<q(2))), h((b>=q(1)) & (b<q(2))), 'FaceColor', [0.9 0 0] );
|
bar(b((b>=q(1)) & (b<q(2))), h((b>=q(1)) & (b<q(2))), 'FaceColor', [0.9 0 0]);
|
||||||
bar( b((b>=q(2)) & (b<q(3))), h((b>=q(2)) & (b<q(3))), 'FaceColor', [0 0 0.9] );
|
bar(b((b>=q(2)) & (b<q(3))), h((b>=q(2)) & (b<q(3))), 'FaceColor', [0 0 0.9]);
|
||||||
bar( b(b>=q(3)), h(b>=q(3)), 'FaceColor', [0.5 0 0.5] );
|
bar(b(b>=q(3)), h(b>=q(3)), 'FaceColor', [0.5 0 0.5]);
|
||||||
hold off;
|
hold off;
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
function q = quartiles( x )
|
function q = quartiles(x)
|
||||||
% returns a vector with the first, second, and third quartile
|
% returns a vector with the first, second, and third quartile
|
||||||
% of the vector x
|
% of the vector x
|
||||||
xs = sort( x );
|
xs = sort(x);
|
||||||
if ( length( xs ) == 0 ) % no data
|
if (length(xs) == 0) % no data
|
||||||
q = [];
|
q = [];
|
||||||
elseif ( rem( length( xs ), 2 ) == 0 ) % even number of data
|
elseif (rem(length(xs), 2) == 0) % even number of data
|
||||||
index = length( xs )/2;
|
index = length(xs)/2;
|
||||||
m = (xs( index ) + xs( index+1 ))/2;
|
m = (xs(index) + xs(index+1))/2;
|
||||||
q = [ round( xs(length(xs)/4) ), m, xs(round(3*length(xs)/4)) ];
|
q = [round(xs(length(xs)/4)), m, xs(round(3*length(xs)/4))];
|
||||||
else % odd number of data
|
else % odd number of data
|
||||||
index = (length( xs ) + 1)/2;
|
index = (length(xs) + 1)/2;
|
||||||
m = xs( index );
|
m = xs(index);
|
||||||
q = [ round( xs(length(xs)/4) ), m, xs(round(3*length(xs)/4)) ];
|
q = [round(xs(length(xs)/4)), m, xs(round(3*length(xs)/4))];
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
function x = rollthedie( n )
|
function x = rollthedie(n)
|
||||||
% return a vector with the result of rolling a die n times
|
% return a vector with the result of rolling a die n times
|
||||||
x = randi( [1, 6], n, 1 );
|
x = randi([1, 6], n, 1);
|
||||||
end
|
end
|
||||||
|
@ -1,48 +1,48 @@
|
|||||||
% sprintf returns a string.
|
% sprintf returns a string.
|
||||||
% This string can be used to annotate plots using the text() function.
|
% This string can be used to annotate plots using the text() function.
|
||||||
s = sprintf( 'x=%f', pi )
|
s = sprintf('x=%f', pi)
|
||||||
|
|
||||||
% fprintf writes directly to console (or into files).
|
% fprintf writes directly to console (or into files).
|
||||||
% for fprintf you usually want to add the line break '\n':
|
% for fprintf you usually want to add the line break '\n':
|
||||||
|
|
||||||
% '%f' formats floating point numbers:
|
% '%f' formats floating point numbers:
|
||||||
fprintf( 'x=%f\n', pi )
|
fprintf('x=%f\n', pi)
|
||||||
% The '%f' formatting string can be anywhere in the string:
|
% The '%f' formatting string can be anywhere in the string:
|
||||||
fprintf( 'x=%fms\n', pi )
|
fprintf('x=%fms\n', pi)
|
||||||
% There can be arbitrary many '%' formatting strings:
|
% There can be arbitrary many '%' formatting strings:
|
||||||
fprintf( 'x=%fms, y=%fkHz\n', pi, 2*pi )
|
fprintf('x=%fms, y=%fkHz\n', pi, 2*pi)
|
||||||
% The '%' itself is generated by '%%':
|
% The '%' itself is generated by '%%':
|
||||||
fprintf( 'x=%f%%\n', pi )
|
fprintf('x=%f%%\n', pi)
|
||||||
% A point followed by a number sets the number of digits after the point:
|
% A point followed by a number sets the number of digits after the point:
|
||||||
fprintf( 'x=%.2fms\n', pi )
|
fprintf('x=%.2fms\n', pi)
|
||||||
% The numbers are appropriately rounded:
|
% The numbers are appropriately rounded:
|
||||||
fprintf( 'x=%.3fms\n', pi )
|
fprintf('x=%.3fms\n', pi)
|
||||||
% A number right before the point sets the width of the generated output:
|
% A number right before the point sets the width of the generated output:
|
||||||
fprintf( 'x=%10.3fms\n', pi )
|
fprintf('x=%10.3fms\n', pi)
|
||||||
% '%e' also formats floating point numbers but forces to write in
|
% '%e' also formats floating point numbers but forces to write in
|
||||||
% exponential style:
|
% exponential style:
|
||||||
fprintf( 'x=%e\n', pi )
|
fprintf('x=%e\n', pi)
|
||||||
% again, a point and number set the number of digits after the point.
|
% again, a point and number set the number of digits after the point.
|
||||||
fprintf( 'x=%.1e\n', pi )
|
fprintf('x=%.1e\n', pi)
|
||||||
% '%g% formats the floating point number to a given number of valid digits
|
% '%g% formats the floating point number to a given number of valid digits
|
||||||
% (default is 5):
|
% (default is 5):
|
||||||
fprintf( 'x=%g\n', pi )
|
fprintf('x=%g\n', pi)
|
||||||
% The number of valid digits is not the number of digits after the point:
|
% The number of valid digits is not the number of digits after the point:
|
||||||
fprintf( 'x=%.2g\n', pi )
|
fprintf('x=%.2g\n', pi)
|
||||||
fprintf( 'x=%.2g\n', 10.123 )
|
fprintf('x=%.2g\n', 10.123)
|
||||||
fprintf( 'x=%.2g\n', 18765.123 )
|
fprintf('x=%.2g\n', 18765.123)
|
||||||
fprintf( 'x=%.5g\n', 18765.123 )
|
fprintf('x=%.5g\n', 18765.123)
|
||||||
|
|
||||||
% '%d' formats integers:
|
% '%d' formats integers:
|
||||||
fprintf( 'x=%d\n', 5 )
|
fprintf('x=%d\n', 5)
|
||||||
% the number defines the width of the output:
|
% the number defines the width of the output:
|
||||||
fprintf( 'x=%3d\n', 5 )
|
fprintf('x=%3d\n', 5)
|
||||||
% precedig the width with a '0' fills up the space with leading zeros:
|
% precedig the width with a '0' fills up the space with leading zeros:
|
||||||
fprintf( 'x=%03d\n', 5 )
|
fprintf('x=%03d\n', 5)
|
||||||
|
|
||||||
% '%s' formats a string:
|
% '%s' formats a string:
|
||||||
fprintf( 'x=%s\n', 'hallo' )
|
fprintf('x=%s\n', 'hallo')
|
||||||
% ... aligned to the right:
|
% ... aligned to the right:
|
||||||
fprintf( 'x=%10s\n', 'hallo' )
|
fprintf('x=%10s\n', 'hallo')
|
||||||
% ... unless the width is negative:
|
% ... unless the width is negative:
|
||||||
fprintf( 'x=%-10s!\n', 'hallo' )
|
fprintf('x=%-10s!\n', 'hallo')
|
||||||
|
Reference in New Issue
Block a user