【问题标题】:smooth out/filter matrix data平滑/过滤矩阵数据
【发布时间】:2016-09-08 18:35:41
【问题描述】:

我有一个 25x10 的矩阵,当我绘制它时,它显示出相当粗糙的表面。 我想将其过滤掉以创建一个具有更多数据点的平滑表面,以获得更精细的网格(但不是线性插值),并且我需要生成平滑表面的过滤数据作为开环的基础。谁能推荐我一个好的方法?现在的结果如下所示:

干杯

编辑:使用“cubic”方法的 griddata 看起来更像预期的结果,但它仍然过多地保留数据。下图显示了三次方的结果和所需的结果。目标是在表面上看不到更多清晰的山峰。

【问题讨论】:

  • 为什么不使用非线性插值?您可以将interpnsplinecubic 方法一起使用

标签: matlab matrix filter filtering


【解决方案1】:

使用griddata 在更精细的网格上插入您的数据。如果 x、y 和 z 是您的数据,您可以定义一个精细网格 (xq, yq) 并在该扩展上内插/外推您的数据。由于默认方法是“线性”,并且您想让表面轮廓更平滑,因此您应该指定另一种方法,例如“自然”。

[xq, yq] = meshgrid(0:20:6000, 0.2:0.01:1);
zq = griddata(x(:), y(:), z(:), xq, yq, 'natural');
surf(xq, yq, zq, 'EdgeColor', 'none')

【讨论】:

  • 感谢您的回复,但是如何将 griddata 与矩阵一起使用?我没有 x、y 和 z 值。
  • 您的绘图似乎没有 x 和 y 的任意值。您如何拥有数据以及如何绘制数据?无论如何,如果您在任何地方都没有 x 和 y,您也可以使用 meshgrid 制作它们,但在某种程度上 x 和 y 的大小与您的 z (25x10) 相同。例如[x,y] = meshgrid(240:240:6000, 0.1:0.1:1)。然后你将拥有 3 个大小相同的矩阵,然后上面的代码就可以了。
  • 我计划稍后指定 x 和 y 值,因为矩阵的形状和数据是主要优先级,所以我现在可以使用我想要的任何 x 和 y 值。我已经按照您的建议使用网格网格创建了两个要使用的值,但是现在整个矩阵都充满了 NaN,我想原因在于 zq 和 yq 值,我该怎么处理这些?
  • 抱歉回复晚了。现在情况如何?任何进展?哪个矩阵用 NaN 填充?写一些你的代码会很好。
  • 对于xqyq,如果你想插值,你应该使用比你的数据更高分辨率的网格。试试这个,你会明白我的意思:[xq, yq] = meshgrid(0.2:0.01:1.1, 1200:20:6000)
猜你喜欢
  • 2017-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多