WPF 通过数据归一化提高WPF绘图效率

导读:本篇文章讲解 WPF 通过数据归一化提高WPF绘图效率,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

这里不对归一化做太多介绍。

首先我们使用的都称作为特征缩放的四种方法之一,min-max normalization的算法

总体而言,缩放数据到0~1,不改变数据分布。

算法也是非常简单。

计算过程为遍历子项减去集合的最小值并除以集合的最大值-集合的最小值

因为我们是point集合所以要分别计算X,Y值,得出的值是0~1之间的值,我们可以看做是某数的百分比,所以我们可以分别乘与想要与之呈现的大小而得到在呈现大小的对应点。

以上过程还可以叫数据区间映射。

 WPF 通过数据归一化提高WPF绘图效率

 

另外 因为使用的WPF,所以都是使用浮点数,在数据非常多的情况下可以通过转换为整数来滤除一些非关键数据【无科学验证,个人猜的…】

例如一千个点,通过算法并转换为整数,会减少四五百左右,不过看不出来是否改变了数据分布的..【按道理应该是又改变了】

WPF 通过数据归一化提高WPF绘图效率

 编程很简单就不上了。

数据缩放

 //转为int整数
//后置整数为要呈现的大小
private Point Normalization(Point p)
          => new Point
            (
            (double)(int)((p.X - MinX) / (MaxX-MinX)*1900),
            (double)(int)((p.Y - MinY) / (MaxY - MinY)*200)
            );

//后置整数为要呈现的大小
        private Point Normalization2(Point p)
        => new Point
          (
            ((p.X - MinX) / (MaxX - MinX) * 400),
         ((p.Y - MinY) / (MaxY - MinY) * 200)
          );

 

贴一个数据筛选的东西吧

  LP2 = LP.Select(x => Normalization(x)).GroupBy(x => x.X, x => x).Select(z=>z.ToList().OrderByDescending(w=>w.Y).ToList()[0]).ToList();
//源集合首先数据缩放,再根据X值分组后筛选出降序排列的点集合中Y值最大的点并重组为集合

 

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

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

(0)
小半的头像小半

相关推荐

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