PCA_PAT ver. 1.0 Tuesday, November 28th 1995 Purpose: Utility, that reads a SNNS *.pat, computes the sample covariance matrix (SCM) of the input patterns, performs an eigenvalue decomposition (EVD) on this matrix and presents the calculated eigenvalues in descending order and the condition number of the SCM (defined as the ratio of the maximum over the minimum magnitude of eigenvalues of the SCM). Eventually, the percent contributions in variance of the principal components (PC) of the input patterns are given, which are defined as the ratio of the corresponding eigenvalue over the sum of all the eigenvalues expressed in %. These contributions are listed in descenting order and presented as isolated and cummulative. Following that, the user can then decide how many major components he wants to preserve and can store the corresponding projection matrix in a *.trfm file and later use the 'trfm_pat' utility with that file and other *.pat files. Special features: The EVD of the unbiased estimate of the covariance matrix of the input patterns is performed via Jacobi iterations implemented with the routine jacobi() provided in 'NUMERICAL RECIPIES IN C'. If some of the calculated eigenvalues of the SCM turn out to be close to 0.0, but are negative due to numerical errors, then the utility considers them to be positive takink their absolute value. The reason is, that a symmetric matrix like the SCM cannot have negative eigenvalues. Usage: Provide to the command line a filename that contains patterns according to the *.pat format specifications of SNNS. If no 'pat' extension is provided, it will be automatically appended by 'pca_pat'. The projection matrix can be saved into a *.trfm file. If the output filename does not include a 'trfm' extension, the programm will append one automatically. If the file already exists, a proper notification will appear. Finally, if the user does not desire to store a projection matrix, he can respond to the 'ENTER>' prompts with . Important note: If you try to keep more primary components than the original number of inputs, all of them will be preserved. Bugs: Make sure that no pattern in a *.pat file ends with an , because the utility will issue a message type 3. Messages: 1) pca_pat: USAGE> pca_pat will be issued if no argument is passed to the program. 2) pca_pat: ERROR> Unable to open file '?'! if there is no such *.pat file in the current directory, or read access to that file has been denied. 3) pca_pat: ERROR> File '?' corrupted? is displayed if there the specified *.pat file seems to be corrupted. 4) pca_pat: INFO> Calculating principal components... is a notification that EVD has started. 5) pca_pat: WARNG> Failed to calculate primary components after 500 iterations! The Jacobi iterations performed on the SCM were not adequate in number to diagonalize it. 6) pca_pat: INFO> Presenation of Principal Components notifies the presentation of the principal component analysis 7) pca_pat: WARNG> File '?' already exists! is displayed if the file given by the user for storing the transform already exists in the current directory. 8) pca_pat: ERROR> Unable to open file '?' for writing! The operating system denies write access to the user for the specified file. 9) pca_pat: INFO> Transform stored in file '?'... displays the file that holds the stored transformation. 10) pca_pat: INFO> Process terminated... issued when program terminates operation.