Выборка неопределенных элементов для создания массивов

Общим способом генерации массива является выборка неопределенных элементов неопределенного объекта. В этом примере показано, как сгенерировать массивы путем взятия случайных выборок 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

См. также

| |

Похожие темы