【问题标题】:Matlab surface plot not giving desired resultsMatlab曲面图没有给出预期的结果
【发布时间】:2013-06-09 16:49:16
【问题描述】:

我正在绘制以下数据:

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

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

第 3 列似乎还可以

当我使用surf(a) 绘制我的表面时,它看起来像这样:

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

那里有什么奇怪的地方吗?

【问题讨论】:

    标签: matlab charts geometry-surface


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-03-07
      • 2020-05-29
      • 1970-01-01
      • 2019-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-09
      • 2021-01-06
      相关资源
      最近更新 更多