【问题标题】:contourf: plot unordered datacontourf:绘制无序数据
【发布时间】:2013-04-12 01:04:22
【问题描述】:

我有一个大小为 3xN 的无序数组,我想绘制数据的轮廓图。 当我尝试

contourf(pnts(1,:),pnts(2,:),pnts(3,:));

Matlab 给出错误。我可以看到 contourf 不想要 1xN 数组,它更喜欢绘制矩阵。如何重新排列我的数据,使其适合contourf?我似乎没有实现它。

我实际上似乎不明白应该如何为contourf 订购数据。任何提示将不胜感激。我的数据可能与this 帖子中的数据相似,但我不知道它会有什么形状。帖子图片:

我的问题在于没有预定义的形状。我发现的所有示例都带有 x 和 Y 的 meshgrid 的星号,然后它们得到 Z 值,但我的 X 和 Y 值可以命名为“有界随机”。我知道它们的大小不超过一个尺寸,但我不知道更多。

编辑 资料:http://pastebin.com/uUxJzttw 您可以直接将其复制粘贴到Matlab中,并将其保存为变量。

【问题讨论】:

  • 发布数据。或者至少是我们可以使用的具有代表性的小样本。
  • @jucestain 来了!

标签: image matlab matlab-figure contour


【解决方案1】:

contourf(X,Y,Z)要求输入X和Y单调递增,可以使用griddata将分散的数据点转换成网格上的一组点:

N = 20;
xq = [0:1/N:1] * (max( data(1,:) )-min( data(1,:) )) + min( data(1,:) );
xq = repmat( xq, [1 N] );
yq = [0:1/N:1]' * (max( data(2,:) )-min( data(2,:) )) + min( data(2,:) );
yq = repmat( yq, [N 1] );
vq = griddata(data(1,:),data(2,:),data(3,:),xq,yq);
contourf(xq, yq, vq);

我用 N=20 和 30 尝试了您的数据。N=20 花了我大约 20 秒,而 N=30 大约需要 1-2 分钟。

【讨论】:

  • N 是点数?该死的,我的Ns通常在5000左右。那是很多时间......
  • 抱歉,执行代码时显示的结果形状与实际点不符...它应该几乎是一个正方形,我得到一个非常奇怪的形状..
  • N 是 vq 的 x 和 y 维度的点数。关于形状,是轮廓还是您希望是正方形的数据点?您能否通过运行plot( data(1,:), data(2,:), 'x') 检查数据点在 x-y 平面中的分布情况?它在我看来是一个平行四边形。
  • 它可以工作,但不是我期望的输出。我会接受你的回答。谢谢你的努力!! :D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-26
  • 1970-01-01
  • 2023-02-23
  • 1970-01-01
  • 2013-02-02
相关资源
最近更新 更多