数据压缩算法:旋转门算法(SDT)的C#实现
来源:互联网 发布:网络中的亲社会行为 编辑:程序博客网 时间:2024/05/01 10:56
public struct point { public point(double pointx, double pointy) { this.x = pointx; this.y = pointy; } private double x; private double y; public double X { get { return x; } set { x = value; } } public double Y { get { return y; } set { y = value; } } }
public struct SDTPoints { private point currentData;//当前读取数据 private point lastReadData;//上一个读取数据 private point lastStoredData;//上一个保存数据 public point CurrentData { get { return currentData; } set { currentData = value; } } public point LastReadData { get { return lastReadData; } set { lastReadData = value; } } public point LastStoredData { get { return lastStoredData; } set { lastStoredData = value; } } }
public List<point> SDTcompress(List<point> originData, double AccuracyE,IProgress<int> progress,CancellationToken cancel)//后两个参数为其异步编程使用 { List<point> listSDT=new List<point>(); double upGate = -double.MaxValue; double downGate = double.MaxValue; double nowUp, nowDown;//当前数据的上下斜率 SDTPoints status=new SDTPoints(); if (originData.Count <= 0) return null; status.LastReadData = originData[0]; status.LastStoredData = status.LastReadData; listSDT.Add(status.LastReadData); int i = 0; foreach (var p in originData) { status.CurrentData = p; nowUp = (p.Y - status.LastStoredData.Y - AccuracyE)/(p.X - status.LastStoredData.X); if (nowUp > upGate) upGate = nowUp; nowDown = (p.Y - status.LastStoredData.Y + AccuracyE)/(p.X - status.LastStoredData.X); if (nowDown < downGate) downGate = nowDown; if (upGate >= downGate) { listSDT.Add(status.LastReadData);//保存前一个点 status.LastStoredData = status.LastReadData;//修改最近保存的点 upGate=(p.Y-status.LastStoredData.Y-AccuracyE)/ (p.X - status.LastStoredData.X); downGate = (p.Y - status.LastStoredData.Y + AccuracyE) / (p.X - status.LastStoredData.X); } status.LastReadData = p; i++; cancel.ThrowIfCancellationRequested(); progress?.Report(i * 100 / originData.Count ); } if (listSDT.Count == 1) { listSDT.Add(originData[originData.Count-1]); } return listSDT; }
阅读全文
1 0
- 数据压缩算法:旋转门算法(SDT)的C#实现
- SDT 旋转门压缩算法的C语言实现 压缩和解压缩
- SDT旋转门压缩算法MFC图形测试
- 旋转门算法
- 数据压缩算法实现
- (转)GPS定位数据压缩算法的设计与实现
- java实现数据压缩的哈夫曼(Huffman)算法
- 一种整数数据压缩存储的算法实现
- 一种整数数据压缩存储的算法实现
- 数据压缩算法
- 数据压缩算法
- 关于简单数据压缩的算法
- 无损数据压缩算法的历史
- 基于哈夫曼树的数据压缩算法
- 数据压缩算法综述(摘录)
- 数据压缩算法学习(一)---RLE算法
- 【数据压缩】LZ78算法原理及实现
- LZW数据压缩算法的原理分析
- Spring AOP详解
- 避免CONVT_NO_NUMBER的Runtime Errors
- SmartGit的相关操作
- sencha cmd常用命令汇总
- mongotemplate mongodb的各种操作 模糊查询 精确查询 等等
- 数据压缩算法:旋转门算法(SDT)的C#实现
- 为WebSphere Application Server v8.5安装并配置JDK7
- 单臂路由&&Trunk详解
- 旋转向量
- 线性表的数组描述
- Solr分词mmseg4j配置
- Android接收短信和发送短信
- Backtracking回溯法(又称DFS,递归)全解
- 动态图解 红黑树-新增节点