当前位置: 首页 > news >正文

矩阵转置与压缩

在整个物联网系统中,嵌入式设备作为数据采集、过滤、缓存、传输的节点,前面系列文章分别介绍了嵌入式设备相关数据过滤、校验和压缩存储算法。缓存和传输阶段,考虑到嵌入式设备的存储空间和传输带宽限制,数据包的压缩还可进一步优化。

以嵌入式终端环境数据采集为例,以10秒间隔采样温度、湿度、气压、风速、四项环境数据,正常情况下,数据在短时间内都是小幅波动或者维持不变。假如采集结果如下表:

数据按字节流存储到文件或者传输出去,占30字节。

unsigned char source_data[30]={10,27,75,98,3,20,27,75,98,3,30,27,75,99,3,40,27,76,99,3,50,28,76,99,2,60,29,76,99,2}

前文行程编码算法

行程编码算法https://mp.csdn.net/mp_blog/creation/editor/152324587要求数据中尽可能出现连续的内容,上表数据并不适合行程编码来压缩。

线性代数的基础是矩阵,此时此刻,矩阵转置的算法就可发挥作用了。将数据原始数据以二维数据的方式保存。

unsigned char source_matrix[5][6]={
10,10,30,98,3,
20,27,75,98,3,
30,27,75,99,3,
40,27,76,99,3,
50,28,76,99,2,
60,29,76,99,2}

观察数据,按C语言的行优先方式没有连续的数据,但如果以列为优先,则数据中存在较多的连续数据。因此先将数据进行矩阵行列转置后,即可满足行程编码的要求。

实现效果以及代码如下

#include "stdio.h"
#include "string.h"void log(char *head,unsigned char* data,unsigned int len,unsigned char line)
{unsigned int i;printf("%s\r\n",head);for(i=0;i<len;i++){printf("%3d ",data[i]);if(((i+1)%line)==0){printf("\r\n");}}printf("\r\n");
}void matrix_transpose(unsigned char* input, unsigned char row, unsigned char column, unsigned char* output)
{unsigned char i, j;for(i = 0; i < row; i++){for(j = 0; j < column; j++){*(output + j * row + i) = *(input + i * column + j);}}
}int main(int argc, char *argv[])
{//原始6行5列的数据unsigned char source[30]={10,27,75,98,3,20,27,75,98,3,30,27,75,99,3,40,27,76,99,3,50,28,76,99,2,60,29,76,99,2};//转成5行6列,用于行程编码unsigned char change[30]={0};//恢复为原始的6行5列unsigned char resume[30]={0};log("source",(unsigned char*)source,sizeof(source),15);log("source",(unsigned char*)source,sizeof(source),5);matrix_transpose((unsigned char*)source,6,5,change);log("change",change,sizeof(change),5);log("[new]",(unsigned char*)change,sizeof(change),15);matrix_transpose(change,5,6,(unsigned char*)resume);log("resume",(unsigned char*)resume,sizeof(resume),5);return 0;
}

其中[new]块数据就适合行程编码来压缩空间,为提高压缩比,可以每20组数据包分为一个矩阵进行转置压缩,太少则压缩比不明显。

矩阵转置与行程编码组合算法,可以解决固定长度,内部数据变化趋于稳定的数据包压缩。

http://www.dtcms.com/a/432854.html

相关文章:

  • 高校网站模板第二章 营销型网站建设测验
  • 网站商城方案提供电商网站建设
  • 沈阳集团网站建设扁平网站欣赏
  • 图片生成器软件西安官网seo公司
  • 广州seo优化北京seo顾问推推蛙
  • 网站代理登录做网站需要多大的图片
  • 黄石做网站的公司广告公司名字三个字
  • 百度网站分析报告变装chinacd wordpress
  • 品牌型网站制作有哪些公司深圳网站设计师
  • 专门做汽车配件的网站石家庄外贸做网站
  • 网站建设服务商有哪些巴中建设局网站
  • 个人搭建网站要多少钱全面的seo网站优化排名
  • 嵌套JSON文件知识详解
  • 南宁月嫂网站建设献县网站建设
  • wordpress视频网站采集器灵武市建设银行网站
  • 虚拟机安装 网络问题
  • 如何修改网站后台登陆入口路劲wordpress影院主题
  • 专业网站策划 西安seo优化是什么职业
  • 响应式企业网站设计与实现广州百度seo
  • 网站首页的重要性佛山网站设计特色
  • 邢台企业做网站哪家好网络服务推广易下拉技巧
  • 自己设计网站湖州建设公司网站
  • 青岛网站建设推进中方元建设工程 网站
  • 南阳网站设计怎么样做好网站运营
  • php网站开发 招聘网站做抢红包活动广告语
  • 恢复原来的网站正能量软件不良网站下载
  • 好的网站怎么设计师动漫网站开发与建设
  • 上海网站建设 微信开发公司跨境自建站模板
  • 在线编程网站开发广州短视频推广
  • 栈之合法括号字符串(RBS)