【问题标题】:MATLAB: Make matrix from two variables and plot contour from third variableMATLAB:从两个变量制作矩阵并从第三个变量绘制轮廓
【发布时间】:2011-05-28 04:32:34
【问题描述】:

我在一个 192x1 向量中有 3 个变量(xyz)。数据都是随机的,有时会有缺失值(NaN)。 我想将变量c 与其他两个变量xy 绘制为等高线图(x 轴上的x,y 轴上的yz 组成等高线)。

我最大的问题是为xy 组成192x192 矩阵,因为xy 由随机数据组成。我曾尝试使用 GRIDDATA、Delaunay 和 TriScatteredInterp,但它们不起作用,因为我的数据中有 NaN。 有谁知道我能做什么?如果有一种方法可以从xy 的散点图中返回xy 的矩阵,那么我的问题就解决了。

示例代码

x=rand(192,1);
y=rand(192,1);
z=rand(192,1);

[X,Y]=meshgrid(x,y);
contour(X,Y,z);

???在 74 处使用 ==> 轮廓时出错 Z 的大小必须为 2x2 或更大。

【问题讨论】:

  • 我想你可以在这里找到答案:stackoverflow.com/questions/1733834/…
  • 感谢您的贡献。我已经尝试过该链接中的建议,但它们不起作用,因为我的数据包含 NaN。

标签: matlab variables matrix contour


【解决方案1】:

你打算用 NaN 做什么?它们是否包含绘制等高线图的任何附加信息?你不能直接删除它们吗?

idx = any(isnan([x y z]),2);
x(idx)=[];
y(idx)=[];
z(idx)=[];

然后您可以从this question 申请解决方案。无论如何都会解释缺失的数据。

【讨论】:

    【解决方案2】:

    由于等高线图的特性,问题在于矩阵 z 的大小。如果你调试你的代码,你会发现在调用 meshgrid 之后,X 和 Y 的大小变为 192 x 192。只需更改以下行,它就可以工作了!让我知道问题是否已解决;)

    z=rand(192,192);
    

    【讨论】:

    猜你喜欢
    • 2021-02-12
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-11
    相关资源
    最近更新 更多