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 (download ). The recent version can be found 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;