Я хочу изучить многомерное распределение Гусса, поэтому я написал следующий код. * Я реализую следующую формулу

жду такого сюжета

Где я делаю ошибку?

clear all
clc
% Taking two guassian random variables
x=randn(1000,1);
y=randn(1000,1);
X=[x y];
X=X';
d=size(X,1);
% find means of x,y
mx=mean(x);
my=mean(y);
mumat=[mx my]';
mumat=repmat(mumat,1,size(X,2));
Dif_mat=X-mumat;
% The above step (Dif_mat) is (X-mu) in the formula
cov_mat=cov(X'); % covariance matrix
det_cv=det(cov_mat); % det of cov matrix
inv_cov=inv(cov_mat); % inverse of cov matrix
% scale term before exp in forumala
scale=((2*pi)^(d/2))*sqrt((abs(det_cv))); 
scale=inv(scale);
% Mahabolis distance in formula 
MB=Dif_mat'*cov_mat*Dif_mat;
% find the final probability
p=scale*exp((-1/2)*MB);
surf(x,y,p)

ПРИМЕЧАНИЕ. 

Matlabsolutions.com предоставляет последнюю Помощь по домашним заданиям MatLab, Помощь по заданию MatLab для студентов, инженеров и исследователей в различных отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для BE, B.Tech ,ME,M.Tech, к.т.н. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.

Вы действительно пытаетесь сделать две вещи здесь. Во-первых, у вас есть случайные данные, и вы хотите подогнать их под многомерное нормальное распределение. Ваш подход к этой части работает, хотя его можно упростить:

n = 1000; d=2;
X = randn(n,2);

Получите среднее значение и ковариацию:

mumat=mean(X);
cov_mat=cov(X);

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

x = -3:.2:3; y = -3:.2:3;
[X,Y] = meshgrid(x,y);
X = X-mumat(1); Y = Y-mumat(2);

Объедините X и Y таким образом, чтобы каждая строка представляла одну двумерную переменную.

Z = [X(:) Y(:)];

Теперь посчитаем вероятности.

СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ