Fast Optimal Space-Filling Design Generators: ISODEN, ISODIS

Versión 1.0.0 (5,57 KB) por Moreno, M.
Quick and easy generation of equally-distributed samples in the unit hypersphere (ISODEN) or hypercube (ISODIS), in multiple dimensions
10 Descargas
Actualizado 12 oct 2024

Ver licencia

ISODEN
Generate n-uniformly distributed points within the unit diameter hypersphere [-1,1] in p-dimensions using energy minimization to equalize point density (minimum-entropy).
Syntax:
[x, k] = isoden(n, p)
[x, k] = isoden(n, p, maxIter)
[x, k] = isoden(n, p, maxIter, step)
Inputs:
  • n (integer): Number of points to generate.
  • p (integer): Dimensionality of the space.
  • maxIter (optional, integer): Maximum number of iterations. Default is based on n and p.
  • step (optional, double): Energy-step constant for energy minimization. Default is based on n and p.
Outputs:
  • x (n-by-p matrix): Generated points.
  • k (double): Final energy density of the sample.
Examples:
% Generate 200 points in 3D space
x = isoden(200, 3);
plotPoints(x)
% Generate 1000 points in 2D space (settings)
[x, e] = isoden(1000, 2, 100, 5e-4);
plotPoints(x)
ISODIS
Generate n uniformly distributed points within the unit length hypercube [0,1] in p-dimensions by maximizing minimum distances between points.
Syntax:
[x, d] = isodis(n, p)
[x, d] = isodis(n, p, maxIter)
[x, d] = isodis(n, p, maxIter, step)
Inputs:
  • n (integer): Number of points to generate.
  • p (integer): Dimensionality of the space.
  • maxIter (optional, integer): Maximum number of iterations. Default is 1000.
  • step (optional, double): Distance-step constant for distance maximization. Default is based on n, maxIter, and p.
Outputs:
  • x (n-by-p matrix): Generated points.
  • d (double): Final average neighbor distance.
Customization:
  • maxIter(2) (optional, integer): Iteration step to update the connectivity matrix.
  • step(2) (optional, integer): Number of changes (factor of n) before updating the connectivity matrix.
Examples:
% Generate 500 points in 2D space
x = isodis(500, 2);
plotPoints(x)
% Generate 100 points in 3D space (settings)
[x, d] = isodis(100, 3, 2e3, 1e-2);
plotPoints(x, 'scatter')
% Update connectivity every 50 iterations
x = isodis(200, 2, [1e3, 50]);
plotPoints(x)
% Update connectivity every 10*n changes
x = isodis(200, 2, [], [NaN, 10]); % Default step(1)
plotPoints(x)
PLOTPOINTS
Visualize scattered point clouds.
Syntax:
plotPoints(X)
plotPoints(X1, X2, ..., Xp)
plotPoints(..., 'scatter')
Inputs:
  • X (n-by-p matrix): Point cloud data.
  • X1, X2, ..., Xp (vectors): Separate coordinate components.
  • 'scatter' (optional, string): Use scatter plot for 3D data instead of spheres.
Example:
% Load data
load seamount x y z
% Plot sample as matrix
plotPoints([x, y, z])
% Plot sample as vectors
plotPoints(x, y, z, 'scatter')

Citar como

Moreno, M. (2024). Fast Optimal Space-Filling Design Generators: ISODEN, ISODIS (https://www.mathworks.com/matlabcentral/fileexchange/173860-fast-optimal-space-filling-design-generators-isoden-isodis), MATLAB Central File Exchange. Recuperado .

Compatibilidad con la versión de MATLAB
Se creó con R2024b
Compatible con cualquier versión
Compatibilidad con las plataformas
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Versión Publicado Notas de la versión
1.0.0