Fast Optimal Space-Filling Design Generators: ISODEN, ISODIS
Version 1.0.0 (5.57 KB) by
Moreno, M.
Quick and easy generation of equally-distributed samples in the unit hypersphere (ISODEN) or hypercube (ISODIS), in multiple dimensions
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')
Cite As
Moreno, M. (2025). 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. Retrieved .
MATLAB Release Compatibility
Created with
R2024b
Compatible with any release
Platform Compatibility
Windows macOS LinuxTags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Discover Live Editor
Create scripts with code, output, and formatted text in a single executable document.
Version | Published | Release Notes | |
---|---|---|---|
1.0.0 |