Matlab表面图没有给出预期的结果

时间:2013-06-09 16:49:17

标签: matlab charts geometry-surface

我正在绘制以下数据:

a=[...
    0.1,  0.7,   0.00284643369242828;...
    0.1,  0.71,  0.00284643369242828;...]

这样第1列永远不会超过大约10 也是如此,第2列从.7变为1。

第3列似乎没问题

当我使用surf(a)绘制表面图时,它看起来像这样: enter image description here

似乎没有正确考虑x和y应该是什么。

那里看起来有点奇怪吗?

1 个答案:

答案 0 :(得分:0)

我认为您需要尝试以下两种方法之一:将高度列分解为自己的矩形矩阵Z并使用surf(Z)绘制相对于其在矩阵中的位置的每个点(因此您的x-和y轴不会按照你想要的方式缩放),或者你可以将你想要的x和y坐标放在他们自己的矢量中,并绘制矩阵Z(在每个点(xi,yj)定义所有i中的N和M在M中,其中x是N个元素长,y是M个元素long)surf(x,y,Z)

x = 0.1:0.1:10;    % or whatever increment you need
y = 0.7:0.01:1;    % or whatever increment you need
Z = zeros(length(x),length(y);   % initialized to the correct size, fill with data

我认为你将不得不重新生成你的Z数据,以便它在矩形矩阵中(x中的元素)(维度中的元素)。

编辑:您无需重新创建数据。如果您知道y中的x和m个唯一元素中有n个唯一元素,则可以使用:

X = reshape(data(:,1),m,n);
Y = reshape(data(:,2),m,n);
Z = reshape(data(:,3),m,n);
surf(X,Y,Z);

这应该可以满足您的需求。