【问题标题】:Matlab - 2D concentration/contour plotMatlab - 二维浓度/等高线图
【发布时间】:2016-08-09 13:04:54
【问题描述】:

二维 matlab 等高线图 - 浓度图

我有两组数据

x = (x1, x2, x3....) y = (y1, y2, y3....)

描述平面中一组点的笛卡尔坐标。所以 x1y1 是对象 1 的坐标,以此类推。

坐标被限制为某些值:描述平面(矩形)尺寸的最小值 (0) 和最大值。

例如,坐标可能描述房间中物体的位置,或田野中树木的位置等等。

如何使用 matlab 将这些坐标(两组数据)表示为二维等高线/浓度图?即不仅仅是平面上的点(散点图),而是平滑连续的颜色图/

亲切的问候 W

【问题讨论】:

  • xy 位置是否都有值?
  • Hu Suever,是的,我有两个向量/数组:x = (x1, x2, x3....) y = (y1, y2, y3....)。每个值都是唯一的并且是一个数字。所以它可能是这样的:x = (1,5,7,8,3....); y = (5,6,3,2,5,8...) 等等。所以这意味着在 (1,5) 有一个对象,另一个在 (5,6),另一个在 (7,3) 等等在。我有(可能)数千个对象。谢谢,W
  • 这不是我问的。你有xy 但是你有xy 的每个组合的值吗? f(x,y)

标签: matlab plot 2d gradient contour


【解决方案1】:

你在问什么并不是很明显。请记住,要制作轮廓,除了 x 和 y 之外,您还需要另一组数据。

我认为您可以使用 meshgrid 来完成您想要实现的目标,它可以为您的数据提供适当的网格:

x = rand(1,20);
y = rand(1,20);
[X,Y]=meshgrid(x,y);
Z = zeros(size(X));
mesh(X,Y,Z);

【讨论】:

    【解决方案2】:

    生成一个矩阵,其中每个值都是一个坐标区域,并为该区域中的每个点加 1。

    例如,您有点 (0.5,0.7) (0.9,0.8) (1.5,0.6) (1.8,1.2)

    然后您将其映射到一个矩阵,其中每个值对应于 1x1 值区域的“正方形”。

    a(1,1) = everything in the region 0 <= x < 1, 0 <= y < 1
    a(1,2) = everything in the region 0 <= x < 1, 1 <= y < 2
    a(2,1) = everything in the region 1 <= x < 2, 0 <= y < 1
    a(2,2) = everything in the region 1 <= x < 2, 1 <= y < 2
    

    所以你会得到[2 1;0 1],然后你可以对其进行轮廓化。

    如果您需要更精细的分辨率,只需减小映射大小即可。

    我无法即时为您提供代码解决方案,因为我的 Matlab 有点生疏,但原理应该可以正常工作。

    【讨论】:

      猜你喜欢
      • 2015-01-17
      • 2011-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多