【问题标题】:curve smoothing in c++C++中的曲线平滑
【发布时间】:2012-10-19 00:34:42
【问题描述】:

我想平滑一条曲线,但不知道要遵循什么方法,图案存储在向量中。

class Point2D
    {
    public:
        double x, y;
        Point2D() 
        {
            this->x=0; 
            this->y=0;
        }
        Point2D(double x, double y)
        {
            this->x = x;
            this->y = y;
        }
           }

vector<Point2D> vec1;

vec1:

         *
       *    *

    .        .
   .           . 
  .              .
 .                 .
.                    .    .
                        . 

平滑后的预期模式:

         *
       *    *
     .        .

   .             . 
  .                .
 .                  .
.                    .    .
                        . 

【问题讨论】:

标签: c++ math smoothing


【解决方案1】:

尝试拉普拉斯平滑。除了您想要保持固定的点(例如图表中的星星),将每个点设置为其直接邻居的平均值。重复一次或两次,具体取决于您想要的平滑程度。

【讨论】:

  • 有源代码吗?我似乎找不到它。
  • @rajat,自己编写并不难。 p,q 两点的平均值是(p+q)/2
  • 我自己写了,stackoverflow.com/questions/12973255/algorithm-for-smoothing。我不知道它叫什么我写了对我有意义的东西,而且它似乎工作正常。
  • @rajat,我已经编辑了我的答案以指定平均直接邻居。您似乎正在使用多个邻居。如果你能得到你想要的结果,那很好,但这不是我想的。
【解决方案2】:

这是一个有点模糊的问题,但如果你想平滑一组数据,你可以查看this

它是多项式回归的链接。然后,您可以使用拟合多项式在曲线上生成平滑点。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-14
    • 2018-03-19
    • 1970-01-01
    • 2016-12-19
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多