WPF 折线/坐标点的绘制 基于序列重要点的时间序列分割算法代码实现

导读:本篇文章讲解 WPF 折线/坐标点的绘制 基于序列重要点的时间序列分割算法代码实现,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

论文的中心内容是:

重要点的判断方式是基于垂直距离最大值,同样和道格拉斯普克算法有一个限定值。

分段过程也是基于第一个找出的点并由此遍历的过程。

具体论文要搜索:基于序列重要点的时间序列分割

给出地址:https://www.docin.com/p-110929153.html

是我理解错了吗?怎么感觉和道格拉斯普克的算法好像….

同样是可以应用与折线图的绘制,在大量点的情况下,绘制较为困难时可以用的算法

 

截图

WPF  折线/坐标点的绘制 基于序列重要点的时间序列分割算法代码实现

 

关键几个地方

   public class SIP
        {
        
            public static double Distance(Point start, Point end, Point x)
            {
                double restult = Math.Abs(start.Y + (end.X - start.X) * ((x.X - start.X) / (end.X - start.X)) - x.Y);
                return restult;
            }

            public static void Segment(List<Point> list, int start, int end, double e, ref List<int> ns)
            {
               
                double maxvalue = 0;
                int index = 0;
                for (int i = start; i < end; i++)
                {
                    var val = Distance(list[start], list[end], list[i]);
                    //和DP一样的过程,具体计算不太一样
                    if (val > maxvalue)
                    {
                        maxvalue = val;
                        index = i;
                    }
                }
                if (maxvalue > e && index != 0)
                {
                    ns.Add(index);
                    //遍历添加
                    Segment(list, start, index, e, ref ns);
                    Segment(list, index, end, e, ref ns);
                }

              
            }
    
            public static List<Point> BSIP(List<Point> list, double e)
            {
                List<Point> BSIPList = new List<Point>();

                List<int> ns = new List<int>();
                //默认添加首点和尾点
                BSIPList.Add(list[0]);
                //遍历分割
                Segment(list, 0, list.Count - 1, e, ref ns);
                ns.Sort();
                foreach (var item in ns)
                {
                    BSIPList.Add(list[item]);
                }
                //默认添加首点和尾点
                BSIPList.Add(list.Last());
                return BSIPList;
            }
        }

 

源代码地址

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/12574.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!