Сравнение 3d графиков в Matlab - PullRequest
0 голосов
/ 31 октября 2018

Мне нужна ваша помощь в сравнении 3d-графиков в Matlab.

Рассмотрим следующий код (на шаге 3 я использую эту функцию)

clear 
rng default

%1) Construct the matrix values
K=3;
mu = zeros(1,K);
sigma = [1 0.6 0.6; 0.6 1 0.6; 0.6 0.6 1];
N = 10^4; %number draws
values = mvnrnd(mu,sigma,N);  %matrix NxK, each row is a draw from a normal with mean mu and variance-covariance matrix sigma

%2) Compute some differences using the matrix value
r01=values(:,1)-values(:,2);
r02=values(:,1)-values(:,3);
r12=values(:,2)-values(:,3);

%3) Compute the bivariate cumulative distribution function (CDF) of [r01 r02], [r01 r12],[r02 r12] 
nxbin=10^2;
nybin=10^2;
[biv_CDF_0102,x_c_0102,y_c_0102,~]=ecdfbiv([r01 r02],nxbin,nybin);
[biv_CDF_0112,x_c_0112,y_c_0112,~]=ecdfbiv([r01 r12],nxbin,nybin);
[biv_CDF_0212,x_c_0212,y_c_0212,~]=ecdfbiv([r02 r12],nxbin,nybin);

Теперь я хочу построить три CDF и понять, похожи ли они. Я ожидаю, что они действительно будут почти равны. Как я могу это сделать? Проблема в том, что сравнивать трехмерные картинки нелегко. На данный момент я делаю это

figure
subplot(3,1,1)
surfc(x_c_0102, y_c_0102,biv_CDF_0102)
subplot(3,1,2)
surfc(x_c_0112, y_c_0112, biv_CDF_0112)
subplot(3,1,3)
surfc(x_c_0212, y_c_0212,biv_CDF_0212)

но это мало помогает. Любое лучшее предложение? enter image description here

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Используйте imagesc и contour для визуализации различий между вашими дистрибутивами. imcontrast с imagesc Я считаю особенно мощным средство отображения различий между функциями, определенными в двухмерных прямоугольных областях.

Я не могу нарисовать вам картину, так как я не знаю, что такое ecdfbiv. Это не стандартный Matlab.

0 голосов
/ 01 ноября 2018

Попробуйте это. Все графики перекрываются на одном графике. 1-й график - красный, 2-й - зеленый, 3-й - синий.

figure
% Red color
surf(x_c_0102, y_c_0102,biv_CDF_0102,'FaceColor', [1 0 0], 'EdgeColor', [1 0 0])
hold on
% Green color
surf(x_c_0112, y_c_0112, biv_CDF_0112,'FaceColor', [0 1 0], 'EdgeColor', [0 1 0])
hold on
% Blue color
surf(x_c_0212, y_c_0212,biv_CDF_0212,'FaceColor', [0 0 1], 'EdgeColor', [0 0 1])
hold off

Выход: enter image description here

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