%!PS-Adobe-2.0
%%Pages: 0 1
%%BoundingBox: 0 0 612 792
%%EndComments
% Shannon's Random Codes, P = 0.75, blocksize = 5, 10, 15, 20
1 setlinewidth
/Red{0 1 1 0 setcmykcolor}def
/Blue{.6 .6 0 0 setcmykcolor}def
/Green{1 0 1 0 setcmykcolor}def
/Black{0 0 0 1 setcmykcolor}def
/inch { 72 mul } def
/p20 {
[ 0.0 -99.99 0.4 -99.99 0.8 -99.99 1.2 -99.99
1.6 -99.99 2.0 97.60 2.4 93.60 2.8 89.00
3.2 81.30 3.6 75.60 4.0 65.80 4.4 56.30
4.8 49.10 5.2 38.8 5.6 32.7 6.0 24.5
6.4 19.76 6.8 15.25 7.2 10.7 7.6 7.76
8.0 5.62 8.4 3.9 8.8 2.4 9.2 1.70
9.6 1.20 10.0 0.70 10.4 -99.99 10.8 -99.99
11.2 -99.99 11.6 -99.99 12.0 -99.99 12.4 -99.99
12.8 -99.99 13.2 -99.99 13.6 -99.99 14.0 -99.99
14.4 -99.99 14.8 -99.99 15.2 -99.99 15.6 -99.99
16.0 -99.99 16.4 -99.99 16.8 -99.99 17.2 -99.99
17.6 -99.99 18.0 -99.99 18.4 -99.99 18.8 -99.99
19.2 -99.99]
} def
/p15 {
[ 0.0000 -99.99 0.5333 100.00
1.0667 99.375 1.6000 97.43
2.1333 92.82 2.6667 86.36
3.2000 77.15 3.7333 67.41
4.2667 56.08 4.8000 46.05
5.3333 36.26 5.8667 28.18
6.4000 21.00 6.9333 15.47
7.4667 11.036 8.0000 7.935
8.5333 5.7 9.0667 3.743
9.6000 2.549 10.1333 1.711
10.6667 1.128 11.2000 0.716
11.7333 0.443 12.2667 0.275
12.8000 0.177 13.3333 0.105
13.8667 0.08 14.4000 0.06
14.9333 0.04 16.4667 0.02
17.0000 0.009 17.5333 -99.99]
} def
%%% below pdd is data for blocksize = dd
/p10 {
[ 0.0 -99.99 0.8 99.83 1.6 93.30 2.4 82.99
3.2 69.93 4.0 56.30 4.8 43.41 5.6 32.22
6.4 23.16 7.2 16.29 8.0 11.11 8.8 7.435
9.6 4.85 10.4 3.13 11.2 1.99 12.0 1.25
12.8 0.764 13.6 0.49 14.4 0.29 15.2 0.17
16.0 0.104 16.8 0.062 17.6 0.0376 18.4 0.0217
19.2 0.0127 20.0 -99.99 20.8 -99.99 21.6 -99.99
22.4 -99.99]
} def
/p5 {
[ 0.0 -99.99 1.6 81.89 3.2 59.09 4.8 40.53
6.4 26.63 8.0 16.09 9.6 10.22 11.2 6.17
12.8 3.66 14.4 2.13 16.0 1.303 17.6 0.72
19.2 0.414 20.8 0.246 22.4 0.13 24.0 -99.99
25.6 -99.99 27.2 -99.99 28.8 -99.99]
} def
%% fetch for the array and push two successive points on graph
/plotpts { % stack: array startindex endindex
/endindex exch def
/startindex exch def
/arr exch def
startindex 2 endindex {
/ind exch def
arr ind get
arr ind 1 add get
arr ind 2 add get
arr ind 3 add get
plotline
} for
} def
/xscale {
6.5 inch mul 24 div
} def
/yscale {
9 inch mul 100 div
} def
%% plot the line joining two successive points
/plotline { % stack: x1 y1 x2 y2 (coordinates to plot)
/y2 exch def
/x2 exch def
/y1 exch def
/x1 exch def
newpath
x1 xscale y1 yscale moveto
x2 xscale y2 yscale lineto
stroke
} def
/Str3 3 string def % string for conversions (see BlueBook, pp. 71-2)
/PlotAxes {
% faint horizontal and vertical lines
% first the faint horizontal lines
0.8 setgray
0 6.5 inch 12 div 6.5 inch { 0 moveto 0 9 inch rlineto stroke} for
% then the faint vertical lines
0 9 inch 10 div 9 inch { 0 exch moveto 6.5 inch 0 rlineto stroke} for
0 setgray
% x and y axes, tick marks along axes
-5 0 moveto 6.5 inch 0 lineto stroke % x axis
0 -5 moveto 0 9 inch lineto stroke 5 % y axis
0 6.5 inch 12 div 6.5 inch { -5 moveto 0 5 rlineto stroke} for
0 9 inch 10 div 9 inch { -5 exch moveto 5 0 rlineto stroke} for
/Helvetica findfont 12 scalefont setfont
% numbers along x (horizontal) axis
0 6.5 inch 12 div 6.5 inch {
/forvar exch def
forvar -10 add -16 moveto
forvar 6.5 inch div 24 mul cvi
%% next line: ugly patch to center horizontal numbers
dup Str3 cvs stringwidth pop 2 div neg 10 add 0 rmoveto
Str3 cvs show
} for
% along y (vertical) axis
0 9 inch 10 div 9 inch {
/forvar exch def
-27 forvar -5 add moveto
forvar 9 inch div 100 mul 0.01 add cvi
%% next line: ugly patch to right justify vertical numbers
dup Str3 cvs stringwidth pop neg 20 add 0 rmoveto
Str3 cvs show
} for
% labels on axes
150 -30 moveto (Codeword Size (1 = Source Size)) show
/Helvetica-Bold findfont 11 scalefont setfont
115 -45 moveto
Red
(Figure 4.1 ) show
/Helvetica findfont 11 scalefont setfont
(Simulation of Shannon's Random Codes) show
/Helvetica findfont 12 scalefont setfont
Black
gsave 90 rotate 200 40 moveto (Error Rate (%)) show grestore
% dashed line for channel capacity
newpath 6.5 inch 24 div 0.18872 div 0 moveto
0 9 inch 0.8 mul rlineto
gsave [2 8] 0 setdash stroke grestore
% header for table
/Helvetica-Bold findfont 18 scalefont setfont
0.15 inch 9.35 inch moveto (Figure 4.1. Simulation of Shannon's Random Codes) show
/Helvetica-Bold findfont 14 scalefont setfont
2 inch 9.1 inch moveto ((Error Probability = 0.25)) show
% legend at upper right of graph
/Helvetica-Bold findfont 12 scalefont setfont
Red 1 inch 8 inch moveto (Blocksize = 20,) show
Red 2.3 inch 8 inch moveto (Tablesize = 1048576,) show
Red 4.3 inch 8 inch moveto (Trials = 10000 @ 30 points) show
Blue 1 inch 8.2 inch moveto (Blocksize = 15,) show
Blue 2.3 inch 8.2 inch moveto (Tablesize = 32768,) show
Blue 4.2 inch 8.2 inch moveto (Trials = 100000 @ 26 points) show
Green 1 inch 8.4 inch moveto (Blocksize = 10,) show
Green 2.3 inch 8.4 inch moveto (Tablesize = 1024,) show
Green 4.1 inch 8.4 inch moveto (Trials = 1000000 @ 24 points) show
Black 1 inch 8.6 inch moveto (Blocksize = 5,) show
Black 2.3 inch 8.6 inch moveto (Tablesize = 32,) show
Black 4.0 inch 8.6 inch moveto (Trials = 10000000 @ 14 points) show
Black 1 inch 7.7 inch moveto
(Dashed vertical line: channel capacity = 0.18872 18755) show
Black 1.3 inch 7.5 inch moveto
((as codeword size, equals 1/0.18872 = 5.2988)) show
} def % plotaxes
1 inch 1 inch translate
PlotAxes
Red p20 10 48 plotpts % blocksize 20
Blue p15 2 58 plotpts % blocksize 15
Green p10 2 46 plotpts % blocksize 10
Black p5 2 26 plotpts % blocksize 5
showpage