Fast Optimal Space-Filling Design Generators: ISODEN, ISODIS

バージョン 1.0.0 (5.57 KB) 作成者: Moreno, M.
Quick and easy generation of equally-distributed samples in the unit hypersphere (ISODEN) or hypercube (ISODIS), in multiple dimensions
ダウンロード: 8
更新 2024/10/12

ライセンスの表示

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')

引用

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. に取得済み.

MATLAB リリースの互換性
作成: R2024b
すべてのリリースと互換性あり
プラットフォームの互換性
Windows macOS Linux

Community Treasure Hunt

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

Start Hunting!
バージョン 公開済み リリース ノート
1.0.0