случайный

Случайная варьируемая величина от Гауссова распределения смеси

Синтаксис

Y = random(gm)
Y = random(gm,n)
[Y,compIdx] = random(___)

Описание

пример

Y = random(gm) генерирует 1 m случайной варьируемой величиной от m - размерное Гауссово распределение смеси gm.

пример

Y = random(gm,n) возвращает n случайные варьируемые величины. Каждая строка Y является случайной варьируемой величиной, сгенерированной от m - размерное Гауссово распределение смеси gm.

пример

[Y,compIdx] = random(___) также возвращает n-by-1 индекс векторный compIdx для любого из входных параметров в предыдущих синтаксисах. compIdx(i) указывает, что компонент смеси раньше генерировал i th случайная варьируемая величина Y(i,:).

Примеры

свернуть все

Создайте объект gmdistribution и сгенерируйте случайные варьируемые величины.

Задайте параметры распределения (средние значения и ковариации) двухкомпонентного двумерного Гауссова распределения смеси.

mu = [1 2;-3 -5];
sigma = [1 1]; % shared diagonal covariance matrix

Создайте объект gmdistribution при помощи функции gmdistribution. По умолчанию функция создает равную смесь пропорции.

gm = gmdistribution(mu,sigma)
gm = 

Gaussian mixture distribution with 2 components in 2 dimensions
Component 1:
Mixing proportion: 0.500000
Mean:     1     2

Component 2:
Mixing proportion: 0.500000
Mean:    -3    -5

Сгенерируйте 1 000 случайных варьируемых величин.

rng('default'); % For reproducibility
[Y,compIdx] = random(gm,1000);

compIdx(i) указывает, что компонент смеси раньше генерировал i th случайная варьируемая величина Y(i,:). Считайте количество случайных варьируемых величин сгенерированным Component 1.

numIdx1 = sum(compIdx == 1)
numIdx1 = 512

random генерирует приблизительно половину случайных варьируемых величин с помощью Component 1, потому что gm имеет равные пропорции смешивания.

Постройте сгенерированные случайные варьируемые величины при помощи scatter.

scatter(Y(:,1),Y(:,2),10,'.') % Scatter plot with points of size 10

Сбросьте генератор случайных чисел, чтобы сгенерировать ту же случайную варьируемую величину.

Задайте параметры распределения (средние значения, ковариации и смешивание пропорций) двух двумерных Гауссовых компонентов смеси.

p = [0.4 0.6];               % Mixing proportions     
mu = [1 2;-3 -5];            % Means
sigma = cat(3,[2 .5],[1 1])  % Covariances 1-by-2-by-2 array
sigma = 
sigma(:,:,1) =

    2.0000    0.5000


sigma(:,:,2) =

     1     1

Функция cat конкатенирует ковариации вдоль третьего измерения массива. Заданные ковариационные матрицы являются диагональными матрицами. sigma(1,:,i) содержит диагональные элементы ковариационной матрицы i компонента.

Создайте объект gmdistribution при помощи функции gmdistribution.

gm = gmdistribution(mu,sigma);

Сохраните текущее состояние генератора случайных чисел, и затем сгенерируйте случайную варьируемую величину с помощью gm.

s = rng;
r = random(gm)
r = 1×2

   -1.1661   -7.2588

Восстановите состояние генератора случайных чисел к s, и затем сгенерируйте случайную варьируемую величину с помощью gm. Значения те же, что и прежде.

rng(s);
r1 = random(gm)
r1 = 1×2

   -1.1661   -7.2588

Входные параметры

свернуть все

Гауссово распределение смеси, также названное Гауссовой моделью смеси (GMM), заданной как объект gmdistribution.

Можно создать объект gmdistribution с помощью gmdistribution или fitgmdist. Используйте функцию gmdistribution, чтобы создать объект gmdistribution путем определения параметров распределения. Используйте функцию fitgmdist, чтобы соответствовать модели gmdistribution к данным, учитывая постоянное число компонентов.

Количество случайных варьируемых величин, чтобы сгенерировать, заданный как положительное целое число.

Типы данных: single | double

Выходные аргументы

свернуть все

Случайная варьируемая величина, возвращенная как 1 m числовым вектором или n-by-m числовая матрица. Каждая строка Y является случайной варьируемой величиной, сгенерированной от m - размерное Гауссово распределение смеси gm.

Индекс компонента, возвращенный как положительное целое число или n-by-1, индексирует вектор, где compIdx(i) указывает, что компонент смеси раньше генерировал i th случайная варьируемая величина Y(i,:).

Представленный в R2007b