如何使用移动平均平滑mathematica中的histogram3D?

如何使用移动平均平滑mathematica中的histogram3D?,3d,wolfram-mathematica,histogram,smoothing,moving-average,3d,Wolfram Mathematica,Histogram,Smoothing,Moving Average,我正在尝试使用mathematica中的移动平均来平滑3D直方图。我知道有一个函数叫做smoothhistogram3D,它接近我想要的,但是,它似乎只有使用分布函数来平滑曲线的选项。我能够创建一个平滑2D直方图的函数,通过修改包括插值顺序和移动平均特征 MovAvgHistoPlot[MovAvg_, dx_] := Module[{histList, transposedHistList, histListAvg}, histList = HistogramList[data, {dx}

我正在尝试使用mathematica中的移动平均来平滑3D直方图。我知道有一个函数叫做smoothhistogram3D,它接近我想要的,但是,它似乎只有使用分布函数来平滑曲线的选项。我能够创建一个平滑2D直方图的函数,通过修改包括插值顺序和移动平均特征

MovAvgHistoPlot[MovAvg_, dx_] := Module[{histList, transposedHistList, histListAvg},
  histList = HistogramList[data, {dx}];

  transposedHistList = Transpose[{histList[[1]],ArrayPad[histList[[2]], {0, 1}, 
    "Fixed"]}];
  histListAvg = MovingAverage[transposedHistList, MovAvg];
  histPlot = ListPlot[histListAvg, InterpolationOrder -> 3, Joined -> True, 
    AxesOrigin -> {histListAvg[[1, 1]], 0}, PlotRange -> All, InterpolationOrder -> 3,
    PlotStyle -> Black, FrameLabel -> {"kTh", "Ion Intensity"},Frame -> {{True, False}, 
    {True, False}}, Axes -> False, ImageSize -> Large]
]

Manipulate[MovAvgHistoPlot[MovAvg, dx], {{MovAvg, 1, "Moving Average"}, 1, 500, 1}, 
  ContinuousAction -> False]
我尝试使用下面的代码将其扩展到第三维,但没有成功

MovAvgHistPlot3D[MovAvg_] := Module[{HistList3D, XAndZGroupedValues, XValues, ZValues, 
  XAndZValues, YValues, ListPlot3DPoints},

  HistList3D = HistogramList[data];
  XAndZValues = Flatten[Partition[Table[Riffle[HistList3D[[1, 2]], 
    HistList3D[[1, 1, i]], {1, -1, 2}], {i,Length[HistList3D[[1, 1]]]}], {1, 2}]];
  YValues = Flatten[ArrayPad[Map[ArrayPad[##, {0, 1}, "Fixed"] &, HistList3D[[2]]], 
    {0, 1}, "Fixed"]]; 
  ListPlot3DPoints = Partition[Riffle[XAndZValues, YValues, {3, -1, 3}], 3];
  ListPlot3DPointsAvg = MovingAverage[ListPlot3DPoints, MovAvg];
  ListPlot3D[ListPlot3DPointsAvg, InterpolationOrder -> 3, Joined -> True]
  ]

Manipulate[MovAvgHistPlot3D[MovAvg], {{MovAvg, 1, "Moving Average"}, 1, 1000, 1},
  ContinuousAction -> False]
但是,3D功能使用我的数据集输出此图像:

我首先尝试使用类似于此的方法,但有一个选项使用移动平均线使其平滑:

ListPlot3D[HistogramList[filteredData1]]
但是,它输出的图像如下所示:

http://imgur.com/Bkj0R9W
(Sorry, can't post more than two links due to lack of reputation points)
我想要一个与smoothhistogram3D的输出非常相似的数据集,但是可以选择使用移动平均进行平滑

http://imgur.com/NRj6V2R
有什么建议吗?有没有一种更简单的方法我没有意识到

抱歉,我意识到代码,尤其是第二部分,几乎不可读。我刚接触mathematica,只是想让它发挥作用


这也是我第一次在stack overflow上发表文章,因此请原谅任何格式错误或指导原则错误。

如果你在网站上问这个问题,可能会更幸运。但是,我建议您将问题简化为一个更简单、更可复制的形式,使用一些随机生成的数据和代码供其他人运行。感谢您的建议,特别是关于使用随机数据的建议。我想在mathematica网站上发布,但我读到stackexchange更多的是针对自以为是的问题。不过我会试试看。