我正在绘制以下数据:
a=[...
0.1, 0.7, 0.00284643369242828;...
0.1, 0.71, 0.00284643369242828;...]
使得第 1 列永远不会超过大约 10,也使得第 2 列从 0.7 变为 1。
第 3 列似乎还可以
当我使用它绘制我的表面时,surf(a)
它看起来像这样:
似乎没有正确考虑 x 和 y 应该是什么。
有什么奇怪的地方吗?
我正在绘制以下数据:
a=[...
0.1, 0.7, 0.00284643369242828;...
0.1, 0.71, 0.00284643369242828;...]
使得第 1 列永远不会超过大约 10,也使得第 2 列从 0.7 变为 1。
第 3 列似乎还可以
当我使用它绘制我的表面时,surf(a)
它看起来像这样:
似乎没有正确考虑 x 和 y 应该是什么。
有什么奇怪的地方吗?
我认为您需要尝试以下两种方法中的一种:将您的高度列分解为自己的矩形矩阵 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);
这应该给你你正在寻找的东西。