在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)
答案 0 :(得分:1)
使用imagesc
和contour
可视化您的发行版之间的差异。我发现imcontrast
和imagesc
在显示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