The input is the number of dimensions M and the parameter H.
The output is a point cloud W involving N points.
W is N uniformly distributed points with M dimensions on the unit hyperplane.
The relationship between M, H and point cloud size N is as follows.
In the case of M=3 dimensions, the results for cases where H is 1 to 6 are as follows.
Ex)
- [W,N] = SLD(M=3,H=2) -> W = [0 0 1; 0 .5 .5; 0 1 0; .5 0 .5; .5 .5 0; 1 0 0]; N = 6;
- [W,N] = SLD(M=5,H=2) -> W = [0 0 0 0 1; 0 0 0 .5 .5; 0 0 0 1 0; 0 0 .5 0 .5; 0 0 .5 .5 0; 0 0 1 0 0; 0 .5 0 0 .5; 0 .5 0 .5 0; 0 .5 .5 0 0; 0 1 0 0 0; .5 0 0 0 .5; .5 0 0 .5 0; .5 0 .5 0 0; .5 .5 0 0 0; 1 0 0 0 0]; N = 15;
Reference
- H. Scheffé, “Experiments with mixtures," Journal of the Royal Statistical Society: Series B (Methodological), Vol. 20, No. 2, pp. 344–360, 1958.
- I. Das and J. E. Dennis, “Normal-boundary intersection: A new method for generating the Pareto surface in nonlinear multicriteria optimization problems," SIAM Journal on Optimization, Vol. 8, No. 3, pp. 631–657, 1998.
Solution Stats
Problem Comments
1 Comment
Solution Comments
Show comments
Loading...
Problem Recent Solvers10
Suggested Problems
-
12789 Solvers
-
141 Solvers
-
Calculate compression ratio of engine
235 Solvers
-
Rounding off numbers to n decimals
5800 Solvers
-
(Linear) Recurrence Equations - Generalised Fibonacci-like sequences
428 Solvers
More from this Author10
Problem Tags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
The tests for W are pitiful. I solved this for real, with some real checks in my scratch pad.
More specifically,
After the check of N, there is a brief, repeatable set of tests which can confirm if W is valid, without providing W in the test. I'm pretty sure any edge cases it misses would be harder to exploit than actually solving the stated problem.
assert(isequal(size(W),[N M]))
assert(all(ismembertol(W*H,0:H),'all'))
WNI=round(W*H); % pretty safe now
assert(all(sum(WNI,2)==H))
assert(isequal(size(unique(WNI,'rows')),[N,M]))
assert(isequal(unique(WNI,'rows'),WNI))