LZW压缩(LZW compression)是一种由Abraham Lempel、Jacob Ziv和Terry Welch发明的基于表查寻算法把文件压缩成小文件的无损压缩方法。具体压缩原理参考LZW压缩算法解析,在此不再赘述,参考LZW算法的个人理解与简单Python实现该文章中的python实现方式写出来matlab代码,为学习matlab基本语法用。

compress.m

function array_after_compress = compress( input_array )
%   该函数可以进行LZW压缩
%   该函数输入为ab序列,输出为压缩后的序列
dict = struct('a',1,'b',2);
prefix = '';
curChar='';
curStr='';
array_after_compress=[];
for curChar = input_arraycurStr = [prefix curChar];if isfield(dict,curStr)output = -1;prefix = curStr;elseoutput=dict.(prefix);prefix = curChar;dict.(curStr)= length(fieldnames(dict))+1;endif output~=-1array_after_compress(end+1)=output;end
end
output = dict.(prefix);
array_after_compress(end+1)=output;
end

decompress.m

function array_after_decompress = decompress( input_array )
curCodeStr = '';
oldCodeStr='';
array_after_decompress=[];
dicSize = 2;
dict(1).id=1;
dict(1).str='a';
dict(2).id=2;
dict(2).str='b';
for curCode = input_array[flag, index] = search(dict, curCode);if flagcurCodeStr = dict(index).str;elsecurCodeStr = [oldCodeStr oldCodeStr(1)];endif strcmpi(oldCodeStr,'')~=1dicSize = dicSize + 1;dict(dicSize).id = dicSize;dict(dicSize).str = [oldCodeStr curCodeStr(1)];endoldCodeStr = curCodeStr;array_after_decompress = [array_after_decompress curCodeStr];
end

search.m

function [flag, index] = search( input_array, curCode )
flag = 0;
index = -1;
for element = input_arrayif element.id == curCodeflag=1;index = element.id;break;end
end

运行结果如下图所示:

matlab实现LZW压缩相关推荐

  1. matlab 测量矩阵,压缩感知中的常见测量矩阵及其MATLAB实现代码

    压缩感知中的常见测量矩阵及其MATLAB实现代码 压缩感知中的常见测量矩阵及其MATLAB实现代码 原文链接:http://blog.csdn.net/jbb0523/article/details/ ...

  2. 压缩感知高斯测量矩阵matlab,浅谈压缩感知(十七):测量矩阵之有限等距常数RIC的计算...

    有限等距常数(RestrictedIsometry Constant, RIC)是与有限等距性质(Restricted IsometryProperty, RIP)紧密结合在一起的一个参数. 一.RI ...

  3. LZW压缩(解压缩)算法详解及源码

    LZW压缩算法是Lempel-Ziv-Welch 3个人共同发明的,简称 LZW 的压缩算法,可以用任何一种语言来实现它. LZW是GIF图片文件的压缩算法,而且zip压缩的思想也是基于LZW实现的, ...

  4. matlab用游程编码压缩图像,基于Matlab的图像压缩编码

    开发与应用 计算机与信息技术 ·23· 基于 Matlab 的图像压缩编码 杨晓 李悦 (贵州大学 计算机与信息学院,贵州 贵阳 550025) 摘 要 本文描述了图像编码压缩方法的主要分类,介绍了每 ...

  5. matlab用游程编码压缩图像,matlab游程编码

    matlab实现游程编码 二值图像的游程编码及解码 一.实验目的 掌握游程编码,并用编程实现游程编码及解码. 二.实验引言 二值图像在图像分析中应用非常广泛,二值图像就是指只有黑白两个灰度级的图像,二 ...

  6. 基于Matlab的图片压缩(超简单)

    压缩原理--SVD 图像在计算机中用矩阵储存,值的大小在0~255,在这里我们令图像的矩阵为A.若图片为灰色图片则颜色通道只有一个,所以A为二维矩阵:若为彩色矩阵则颜色通道由3种,分别B,G,R,分别 ...

  7. 线性调频脉冲信号 matlab,线性调频脉冲信号压缩的原理及MATLAB仿真程序

    摘 要:本论文对目前在雷达信号处理系统中应用较为广泛的脉冲压缩技术进行了介绍,主要是线性调频的脉冲压缩信号.首先对脉冲压缩的概念以及雷达的工作原理进行了介绍,其次介绍了线性调频脉冲压缩技术的基本原理, ...

  8. lzw压缩 java_java实现的LZW 压缩算法源码 | 学步园

    导读:/* * LZW.java * * Created on 01 Dec 2005 * * Implementation of LZW compression/decompression algo ...

  9. matlab pso 信号压缩重构_肇庆永磁变频空气压缩机研发,专业是我们品质服务

    压缩机工作时,空气经过自洁式空气过滤器被吸入,通过PLC自动清洗过滤器,空气在经过进口导叶自动调节后进入一级压缩,经一级压缩后的气体温度较高,然后进入中间冷却器进行冷却(水走管内,气走管外,中冷器的水 ...

最新文章

  1. android插件化-apkplug中以监听方式获取OSGI服务-09
  2. sqlserver如何通过管理器设置字段的自增
  3. 银行的清算、清分、结算、对账
  4. 利用Swift语言特性,随手写个伪随机数生成器
  5. 基于Boost::beast模块的协程WebSocket 服务器
  6. Python练习-从小就背不下来的99乘法表
  7. 机器学习的一些注意事项
  8. linux大内存拷贝优化,Linux 下基础设施及系统网络优化
  9. 北方民族大学计算机全国排名,校友会:全国15所民族类大学排名,这三所大学进入十强...
  10. HDU_2156 分数矩阵
  11. 百度——LBS.云 v2.0——云存储的POI创建和删除--Android 源码
  12. 【浅说】堆(heap)和栈(stack)区别
  13. 360手机助手pc版 v2.4.0.1265 官方版
  14. python查内置函数,怎么查看python内置函数
  15. 记录一个找直线三等分点的方法及其证明
  16. Scala学习笔记01
  17. 连接问题:ORA-3136:inbound connection timed out
  18. Android 截取指定号码的短信 并且不让系统获取短信通知用户
  19. python中常用英语口语_常用英语口语100句超实用-
  20. linux就该这么学【信号】

热门文章

  1. 激光雷达数据处理常用软件
  2. 【零基础】极星9.3几种套利的说明
  3. hoj 2662 Pieces Assignment
  4. 部署微信定位精灵APK到Genymotion
  5. 工业6轴机器人逆解(PIEPER)
  6. matlab画交线曲面平面交线,用matlab如何画以下两面的交线。圆柱面方程x^2+y^2=125^2,平面方程x+z*tan(pi/9)-pi*5/4=0。拜托各位大侠...
  7. FAF世链区块链大会|区块链开发工程师王祥懿:FAF全球首发第一条CDN公链
  8. 微信公众号授权登录获取code获取openid注意事项(采坑解决方案)
  9. Linux自动挂载 (autofs)
  10. 关于做好2022年享受税收优惠政策的集成电路企业或项目、软件企业清单制定工作有关要求的通知