LATINIZE
Force a Dataset to be a Latin Hypercube
LATINIZE
is a FORTRAN90 library which
adjusts an M dimensional dataset of N points
so that it forms a Latin hypercube.
On output, each row of the table will have the properties that:

the minimum and maximum row values are the same as on input;

the row contains N evenly spaced values between the
minimum and maximum.

in each row, the elements retain their ordering.
Licensing:
The computer code and data files described and made available on this web page
are distributed under
the GNU LGPL license.
Languages
LATINIZE is available in
a C version and
a C++ version and
a FORTRAN77 version and
a FORTRAN90 version and
a MATLAB version.
Related Data and Programs:
LATIN_CENTER,
a FORTRAN90 library which
computes a Latin Square by choosing the center of each square.
LATIN_COVER,
a FORTRAN90 library which
produces N Latin squares which cover an NxN square,
or NxN Latin cubes which cover an NxNxN cube.
LATIN_EDGE,
a FORTRAN90 library which
computes a Latin Square by choosing the edge of each square.
LATIN_RANDOM,
a FORTRAN90 library which
computes a Latin Square by choosing a random point of each square.
TABLE_LATINIZE,
a FORTRAN90 program which
allows the user to name the input data file on the command line.
Reference:

Michael McKay, William Conover, Richard Beckman,
A Comparison of Three Methods for Selecting Values of Input
Variables in the Analysis of Output From a Computer Code,
Technometrics,
Volume 21, pages 239245, 1979.

Yuki Saka, Max Gunzburger, John Burkardt,
Latinized, Improved LHS, and CVT Point Sets in Hypercubes,
International Journal of Numerical Analysis and Modeling,
Volume 4, Number 34, 2007, pages 729743,
Source Code:
Examples and Tests:
CVT_02_00010 is a set of 10 CVT points in 2D:
CVT_03_00007 is a set of 7 CVT points in 3D:
CVT_03_00056 is a set of 56 CVT points in 3D:
CVT_07_00100 is a set of 100 CVT points in 7D:
List of Routines:

CH_CAP capitalizes a single character.

CH_EQI is a case insensitive comparison of two characters for equality.

CH_TO_DIGIT returns the integer ( kind = 4 ) value of a base 10 digit.

FILE_COLUMN_COUNT counts the number of columns in the first line of a file.

FILE_NAME_EXT_GET determines the "extension" of a file name.

FILE_NAME_EXT_SWAP replaces the current "extension" of a file name.

FILE_ROW_COUNT counts the number of row records in a file.

GET_UNIT returns a free FORTRAN unit number.

R8MAT_DATA_READ reads data from an R8MAT file.

R8MAT_HEADER_READ reads the header from an R8MAT file.

R8MAT_LATINIZE "Latinizes" a real table dataset.

R8MAT_PRINT_SOME prints some of a DMAT.

R8MAT_TRANSPOSE_PRINT prints a real matrix, transposed.

R8MAT_TRANSPOSE_PRINT_SOME prints some of a real matrix, transposed.

R8MAT_WRITE writes an R8MAT file.

R8VEC_SORT_HEAP_INDEX_A does an indexed heap ascending sort of a real vector.

S_BLANK_DELETE removes blanks from a string, left justifying the remainder.

S_INDEX_LAST finds the LAST occurrence of a given substring.

S_TO_R8 reads an R8 from a string.

S_TO_R8VEC reads an R8VEC from a string.

S_WORD_COUNT counts the number of "words" in a string.

TIMESTAMP prints the current YMDHMS date as a time stamp.
You can go up one level to
the FORTRAN90 source codes.
Last revised on 04 February 2012.