Общим способом генерации массива является выборка неопределенных элементов неопределенного объекта. В этом примере показано, как сгенерировать массивы путем взятия случайных выборок umat
неопределенная матрица, которая имеет два неопределенных элемента. (Чтобы сгенерировать массивы путем дискретизации при определенных значениях, используйте usubs
.)
Создайте неопределенную матрицу.
a = ureal('a',4); b = ureal('b',2); M = [a b;b*b a/b;1-b 1+a*b]
M = Uncertain matrix with 3 rows and 2 columns. The uncertainty consists of the following blocks: a: Uncertain real, nominal = 4, variability = [-1,1], 3 occurrences b: Uncertain real, nominal = 2, variability = [-1,1], 6 occurrences Type "M.NominalValue" to see the nominal value, "get(M)" to see all properties, and "M.Uncertainty" to interact with the uncertain elements.
Дискретизируйте неопределенный действительный параметр b
в матричном M
, в 20 случайных точках в его области значений.
[Ms,bvalues] = usample(M,'b',20);
Это приводит к массиву 20 3 на 2 umat
матрицы, с одним неопределенным элементом, a
. Неопределенный элемент b
от M
была выбрана, оставив на своем месте новое измерение массива.
Ms
Ms = 20x1 array of uncertain matrices with 3 rows, 2 columns, and the following uncertain blocks: a: Uncertain real, nominal = 4, variability = [-1,1], 3 occurrences Type "Ms.NominalValue" to see the nominal value, "get(Ms)" to see all properties, and "Ms.Uncertainty" to interact with the uncertain elements.
Кроме того, bvalues
- структура, содержащая соответствующие выборочные значения b
.
bvalues
bvalues=20×1 struct array with fields:
b
Затем выберете оставшийся неопределенный действительный параметр a
в матричном Ms
. Это удаляет второй неопределенный блок, получая 3 на 2 на 20 на 15 double
.
[Mss,avalues] = usample(Ms,'a',15);
size(Mss)
ans = 1×4
3 2 20 15
Можно также дискретизировать несколько параметров сразу. Следующая операция возвращается Mss1
, что идентично Mss
.
[Mss1,values] = usample(M,'b',20,'a',15);
Вместо выборки каждой переменной (a
и b
) независимо, генерируя сетку 20 на 15 в 2-мерном пространстве, можно дискретизировать двумерное пространство непосредственно. Дискретизируйте 2-мерное пространство с 800 точками.
[Ms2d,values] = usample(M,{'a' 'b'},800);
Ms2d
является 3х2-х800 umat
массив, где каждая запись соответствует другому случайным образом выбранному (a,b)
пара. Массив структур values
содержит эти (a,b)
значения.
values
values=800×1 struct array with fields:
a
b