Я хочу изучить многомерное распределение Гусса, поэтому я написал следующий код. * Я реализую следующую формулу
жду такого сюжета
Где я делаю ошибку?
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(:)];
Теперь посчитаем вероятности.
СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ