生成遵循给定分布的点

问题描述 投票:0回答:1

给定按以下方式计算的概率密度函数和累积分布函数,我想生成遵循分布的 M 个伪随机数。为了在一维中做到这一点,我使用了反演方法,但现在我在二维中应用它时遇到了困难。有谁知道该怎么做?或者有其他方法可以达到相同的目标吗?

a = 4; % Limiti per x e y
N = 50; % Numero di valori equidistanti
M = 100000; % Numero di punti da generare
nBin = 30; % Numero di bin per l'istogramma

% Generazione dei punti e calcolo dell'errore
x = linspace(-a, a, N);
y = linspace(-a, a, N);
[X, Y] = meshgrid(x, y);
% Costruzione del campo di errore 
sigma = 1; 
mu1 = [-a/2, -a/2]; 
mu2 = [a/2, a/2]; 
err1 = exp(-((X - mu1(1)).^2 + (Y - mu1(2)).^2) / (2*sigma^2));
err2 = exp(-((X - mu2(1)).^2 + (Y - mu2(2)).^2) / (2*sigma^2));
err = 14 * err1 + 7 * err2;

% Normalizzazione per ottenere una densità di probabilità
densita_di_prob = err / sum(err(:));

% Calcolo della funzione cumulativa congiunta
funzione_cumulata = cumsum(cumsum(densita_di_prob, 1), 2);
funzione_cumulata = funzione_cumulata / funzione_cumulata(end);
matlab
1个回答
0
投票

您需要将反演采样技术应用于二维。

通常,您必须通过取两个维度的总和来计算累积分布函数(您已经通过

funzione_cumulata
完成了)。接下来,您将需要为
x
y
维度生成两组独立的均匀随机数,并将其映射到 CDF 中。

我对 matlab 脚本的尝试是:

% Step 1: Generate uniform random numbers for sampling
u1 = rand(1, M); % M random samples for the x-dimension
u2 = rand(1, M); % M random samples for the y-dimension

% Step 2: Find corresponding x, y points using inverse transform sampling
x_generated = zeros(1, M);
y_generated = zeros(1, M);

for i = 1:M
    % Find the x, y indices in the CDF that correspond to u1(i) and u2(i)
    [~, x_idx] = min(abs(funzione_cumulata(:, end) - u1(i))); % Find x index
    [~, y_idx] = min(abs(funzione_cumulata(x_idx, :) - u2(i))); % Find y index

    % Convert indices to x, y coordinates
    x_generated(i) = x(x_idx);
    y_generated(i) = y(y_idx);
end

% Plot the generated points
scatter(x_generated, y_generated, '.')
title('Generated Points Following the Desired Distribution')
xlabel('x')
ylabel('y')

对于 URN

u1
u2
[0, 1]
中的均匀随机数,对应于要使用 CDF 映射的随机变量。对于每个生成的 URN,您需要在
funzione_cumulata
中找到相应的索引。我通过
min(abs(...))
方法找到最接近随机均匀数的 CDF 值。

您也可以尝试拒绝抽样,但我不太熟悉如何做到这一点。我相信这篇堆栈文章将对此有所帮助......

采用剔除法抽样

© www.soinside.com 2019 - 2024. All rights reserved.