在Matlab中比较3D图形

时间:2018-10-31 18:51:55

标签: matlab

在Matlab中比较3d图形时,我希望您能提供帮助。

考虑以下代码(在步骤3中,我正在使用this函数)

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并了解它们看起来是否相似。我希望它们确实几乎相等。我怎样才能做到这一点?问题在于比较3D图片并不容易。目前,我正在这样做

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 :(得分:1)

使用imagesccontour可视化您的发行版之间的差异。我发现imcontrastimagesc在显示2D矩形域上定义的函数之间的差异方面特别强大。

我无法为您绘制图片,因为我不知道ecdfbiv是什么。这不是标准的MATLAB。

答案 1 :(得分:0)

尝试一下。所有图都重叠在一张图中。第一个图是红色,第二个图是绿色,第三个图是蓝色。

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

输出: JSFIDDLE Demo