0

我正在绘制以下数据:

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

使得第 1 列永远不会超过大约 10,也使得第 2 列从 0.7 变为 1。

第 3 列似乎还可以

当我使用它绘制我的表面时,surf(a)它看起来像这样: 在此处输入图像描述

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

有什么奇怪的地方吗?

4

1 回答 1

0

我认为您需要尝试以下两种方法中的一种:将您的高度列分解为自己的矩形矩阵 Z 并使用surf(Z)相对于其在矩阵中的位置绘制每个点(因此您的 x 轴和 y 轴不会被缩放你想要的方式),或者你可以把你想要的 x 和 y 坐标放在它们自己的向量中,并绘制矩阵 Z(在每个点 (xi, yj) 为所有 i 在 N 和 j 在 M 中定义,其中 x 是 N元素长且 y 是 M 个元素长)与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 中有 n 个唯一元素,y 中有 m 个唯一元素,那么您可以使用:

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

这应该给你你正在寻找的东西。

于 2013-06-09T17:29:26.837 回答