利用Graphics.DrawCurve(Pen, Point[]) 在图上画出曲线,但是发现上下波动起伏很大,有没有什么算法来修饰曲线.让其变成平滑的曲线,
需要修饰的图:  
想要效果的图:  

解决方案 »

  1.   

    DrawCurve的应该就是平滑的了,要是你想做到效果图那样,可以考虑采样值取得大一点
    新Point[]从原Point[]中等间隔抽取,或许会好一点
    个人见解,仅供参考
      

  2.   

    DrawCurve的应该就是平滑的了,要是你想做到效果图那样,可以考虑采样值取得大一点 
    新Point[]从原Point[]中等间隔抽取,或许会好一点 
    个人见解,仅供参考   你是说对数值进行处理??    减少中间的数值???但是听说有一种算法  就是比较值的大小 .然后对数值进行处理.修饰过大的数值..但是我觉得应该是数值过密的原因才这样..不知道有经验的人怎么看?
      

  3.   


    我只是看你的图说话而已啦,个人看法啦,应该说三种方法,
    一个是我上文说的,去除部分点,等间隔采样,一个是求附近一段范围的均值或方差,舍去过大或过小的;另一种是拉大横轴,就是说,把你point的X乘上一个数值。
    第一种,只是显示大体趋势
    第二种,算是求取稳态吧,或者当做滤波……
    第三种,就是方便显示而已,数学书上说是- -沿X轴方向扩展……说到深证成指……恐怕第三种方法不行,不考虑精度的话,第一种最简单
      

  4.   

    kingdomgps 
    使用 最小二乘拟合 貌似可以
    您好  ,,你说的我不知道,能举个例子吗?
      

  5.   

    我只是看你的图说话而已啦,个人看法啦,应该说三种方法, 
    一个是我上文说的,去除部分点,等间隔采样,一个是求附近一段范围的均值或方差,舍去过大或过小的;另一种是拉大横轴,就是说,把你point的X乘上一个数值。 
    第一种,只是显示大体趋势 
    第二种,算是求取稳态吧,或者当做滤波…… 
    第三种,就是方便显示而已,数学书上说是- -沿X轴方向扩展…… 说到深证成指……恐怕第三种方法不行,不考虑精度的话,第一种最简单
    第一种,只是显示大体趋势   比较合适
      

  6.   

    http://topic.csdn.net/t/20050331/09/3896529.html 
    这个帖子和我问题很像,可是我不太懂
      

  7.   

    http://topic.csdn.net/t/20060517/09/4757180.html给你个二次插值的公式,翻译成c#代码就可以了   
      已知A、B、C三点坐标分别为:A(x1f(x1)),B(x2f(x2)),   C(x3f(x3))   根据拉格朗日二次插值计算该曲线上任意一点的坐标公式:   
        P(x)   =   {     [(x-   x2)*   (x   –x3)   ]   /   [(x1-x2)*(x1-x3)]   }   *   f(x1)   +   {     [(x-   x1)*   (x   –x3)   ]   /   [(x2-x1)*(x2-x3)]   }   *   f(x2)   +   {     [(x-   x1)*   (x   –x2)   ]   /   [(x3-x1)*(x3-x2)]   }   *   f(x3)   
      即可得到任意一点的平面坐标。   上面那段看不懂..知道告诉一声.
      

  8.   


    就是说 f(x1)f(x2)f(x3) 是曲线上3个点的X值和Y值的关系 根据这个公式,可以由平面上的X轴坐标求Y轴坐标
      

  9.   

    http://download.csdn.net/source/546813用C#绘制实时曲线图源代码   1        
    在实际项目中我们经常需要绘制一些实时的数据图片,比如当前各公司的用水量、用电量还有播放声音视频时实时显示当前的声频等等,在我们最熟悉的任务管理器也有这么一个功能,用来表示当前CPU的使用频率,最近笔
    Tag: .net  C#  GDI+  WinForm    用户: zhoufoxcn   发布日期:2008-07-21 你可以参考下,我也不知道是不是能用的,就是在下载区搜索了下
    - -|||
      

  10.   


    A (1,1) B (3,3) C (5,5) (设f(x)=x,则若x=2,那么f(x)=2)
    P(x)={[(x-x2)*(x–x3)]/[(x1-x2)*(x1-x3)]}*f(x1)+{[(x-x1)*(x-x3)]/[(x2-x1)*(x2-x3)]}*f(x2)+{[(x-x1)*(x–x2)]/[(x3-x1)*(x3-x2)]}*f(x3)
    ={[(x-3)*(x-5)/(1-3)*(1-5)]}*1...
    =(x-3)*(x-5)/8-(x-1)*(x-5)*3/4+(x-1)*(x-3)*5/8P(2)=...
    =3/8+9/4+(-5/8)
    =2
    所以P(2)=2即 f(2)=2 在同一条曲线上