Documentation |
An extremely common manner in which to generate an array is to sample (in some of the uncertain elements) an uncertain object. Using the ureal objects a and b from above, create a 2-by-3 umat.
M = [a b;b*b a/b;1-b 1+a*b] UMAT: 3 Rows, 2 Columns a: real, nominal = 4, variability = [-1 1], 3 occurrences b: real, nominal = 2, variability = [-1 1], 6 occurrences size(M) ans = 3 2
Sample (at 20 random points within its range) the uncertain real parameter b in the matrix M. This results in a 3-by-2-by-20 umat, with only one uncertain element, a The uncertain element b of M has been "sampled out", leaving a new array dimension in its place.
[Ms,bvalues] = usample(M,'b',20); Ms UMAT: 3 Rows, 2 Columns [array, 20 x 1] a: real, nominal = 4, variability = [-1 1], 2 occurrences size(Ms) ans = 3 2 20
Continue sampling (at 15 random points within its range) the uncertain real parameter a in the matrix Ms. This results in a 3-by-2-by-20-by-15 double.
[Mss,avalues] = usample(Ms,'a',15); size(Mss) ans = 3 2 20 15 class(Mss) ans = double
The above 2-step sequence can be performed in 1 step,
[Mss,values] = usample(M,'b',20,'a',15); class(Mss) ans = double
In this case, values is a 20-by-15 struct array, with 2 fields b and a, whose values are the values used in the random sampling. It follows that usubs(M,values) is the same as Mss.
Rather than sampling the each variable (a and b) independently, generating a 20-by-15 grid in a 2-dimensional space, the two-dimensional space can be sampled. Sample the 2-dimensional space with 800 points,
[Ms,values] = usample(M,{'a' 'b'},800); size(Ms) ans = 3 2 800 size(values) ans = 800 1