⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 build_mix_2d_gaussian.m

📁 本算法包括最大似然估计
💻 M
字号:
function [X,N] = build_mix_2D_gaussian( u_c,covar_c,p_c,N )
%% build_mix_2D_gaussian - build a distribution of a mixed gaussian % % format:   [X,N] = build_mix_2D_gaussian( u_c,covar_c,p_c,N )%% input:    u_c     - 2xM matrix, mean of the gaussians in the distribution
%           covar_c - 2x2xM matirx, covariance of the gaussians
%           p_c     - 1xM vector, ratio between the gaussians in the distribution
%           N       - total number of samples, this number might change a little%% output:   X       - the random variable matrix Nx2
%           N       - the length of the given 2D vector%

% initialize
M           = length(p_c);                  % the number of mixed gaussians
p_c         = round( p_c / sum(p_c) * N );  % number of samples for each gaussian
N           = sum( p_c );                   % total number of samples
X           = zeros(N,2);                   % initialize output samples 2D vector
idx         = 1;                            % counter
actual_cov  = zeros(2,2,M);                 % the actual covariance calculated from the samples
actual_mean = zeros(2,M);                   % the actual mean calculated from the samples

% build distribution
for m = 1:M
    if (idx>1)
        span = sum(p_c(1:idx-1)):sum(p_c(1:idx));
    else
        span = 1:p_c(1);
    end
    X(span,:) = mvnrnd( u_c(:,idx),covar_c(:,:,idx),length( span ) );
    idx       = idx + 1;
    actual_cov(:,:,m) = cov( X(span,:) );
    actual_mean(:,m)  = mean( X(span,:) )';
end

% plot the ACTUAL distribution
plot_mix_gaussian( actual_mean,actual_cov,p_c/sum(p_c),X );

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -