PRTools
PRTools is the software package used in the book:
by Ferdi van der Heijden, Robert P.W. Duin, Dick de Ridder and David M.J. Tax, John Wiley & Sons, 424 pages, ISBN 0470090138, 2004.
The PRTools version used in the book is PRTools 4, which can be downloaded here.
Code and data
The listings in the book can be downloaded as a ZIP archive, by following this link:
- listings.zip (28 Kb)
The data used in these listings can be downloaded as three separate ZIP archives:
- data.zip (102 Kb)
- license_plates.zip (3530 Kb)
- tofdata.zip (9583 Kb)
The latter two files are distributed separately due to their size. The license plates data is needed only to run Listing 6.3; the time-of-flight data only for Listing 9.8.
Installation of the listings and the accompanying data is simple. Unpack (using, for example, WinZIP) the archives in a single directory, for example C:\CPESE. Start up Matlab and type:
>> addpath('C:\CPESE');
replacing C:\CPESE by the directory name you chose.
You can add this path permanently by editing your startup.m script. On Windows, this is stored in a subdirectory work of the directory you installed Matlab in. On Unix, it is usually stored in $HOME/matlab.
Projects
Three different projects have been defined, covering most of the topics in the book.
- A supervised classification problem. The distinction between rings, nuts and bolts.
- An extended explanation in PDF: proj_class1.pdf
- Data required in this exercise: proj_class1.zip
- A clustering problem. The segmentation of images.
- An extended explanation in PDF: proj_class2.pdf
- Data required in this exercise: proj_class2.zip
- A parameter estimation problem. The resistance of carbon film resistors.
- An extended explanation in PDF: proj_parm1.pdf
- Data required in this exercise: proj_parm1.zip
Errata
- Page 23, Listing 2.2:
w2 = w1*classc*costm([],cost); % Take cost into account
should read:
w2 = w1*classc*costm([],cost'); % Take cost into account
- Page 202, Listing 6.1:
title(['forward: ' num2str(+w{2})]);
should read:
=title(['forward: ' num2str(+w)]);=
title(['backward: ' num2str(+w{2})]);
should read:
title(['backward: ' num2str(+w)]);
title(['b&b: ' num2str(+w{2})]);
should read:
title(['b&b: ' num2str(+w)]);
- Page 278, Listing 8.3 and Page 290, Listing 8.4:
z = acquire_measurement_vector();
should read:
z = acquire_measurement_vector;
u = get_control_vector();
should read:
u = get_control_vector;
- Page 23, Listing 2.2:
w2 = w1*classc*costm([],cost); % Take cost into account
should read:
w2 = w1*classc*costm([],cost'); % Take cost into account
- Page 202, Listing 6.1:
title(['forward: ' num2str(+w{2})]);should read:
=title(['forward: ' num2str(+w)]);=title(['backward: ' num2str(+w{2})]);should read:
title(['backward: ' num2str(+w)]);
title(['b&b: ' num2str(+w{2})]);should read:
title(['b&b: ' num2str(+w)]);
- Page 278, Listing 8.3 and Page 290, Listing 8.4:
z = acquire_measurement_vector();
should read:
z = acquire_measurement_vector;
u = get_control_vector();
should read:
u = get_control_vector;