matlab zigzag算法,MATLAB 实现zigzag扫描(z字形扫描)

matlab zigzag算法,MATLAB 实现zigzag扫描(z字形扫描)今天在做多媒体作业的时候需要实现 JPEG 压缩 其中一步就是将量化后的块做 zigzag 扫描 我在网上找了很久 发现反复流传的就一份 MATLAB 代码 无奈这份代码跑起来结果和我预料的不一致 于是进行了修改 下面是修改后的代码 functionb zigzag a 输入是一个 8 8 的矩阵 输出一个 1 64 的矩阵 行向量 这是参照 Universityof 提供的 MPE

今天在做多媒体作业的时候需要实现JPEG压缩,其中一步就是将量化后的块做zigzag扫描。我在网上找了很久,发现反复流传的就一份MATLAB代码,无奈这份代码跑起来结果和我预料的不一致,于是进行了修改,下面是修改后的代码。

function b=zigzag(a)

% 输入是一个8*8的矩阵,输出一个1*64的矩阵(行向量)

% 这是参照 University of California 提供的 MPEG 源代码的基础上编制的。

% Copyright (c) 1995 The Regents of the University of California.

[n,m]=size(a);

if(n~=8 && m~=8)

error(‘Input array is NOT 8-by-8’);

end

% Set up array for fast conversion from row/column coordinates to

zigzag=[1 2 9 17 10 3 4 11

18 25 33 26 19 12 5 6

13 20 27 34 41 49 42 35

28 21 14 7 8 15 22 29

36 43 50 57 58 51 44 37

30 23 16 24 31 38 45 52

59 60 53 46 39 32 40 47

54 61 62 55 48 56 63 64];

aa = reshape(a’,1,64); % 将输入块变成1×64的向量

zigzagR = reshape(zigzag’,1,64);

b = aa(zigzagR); % 对 aa 按照查表方式取元素,得到 zig-zag 扫描结果

end

验证结果如图:

ec45b9a4d19a981bb4df805b6fcf3413.png

然后下图是手写推理验证:

3d843c7dbbb273efd49fc5c95656cbff.png

希望能对大家有所帮助

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/213710.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午5:49
下一篇 2026年3月18日 下午5:49


相关推荐

  • 【有参考文献】基于数据驱动的模型预测控制电力系统机组组合优化 该程序复现文章《Feature-…

    【有参考文献】基于数据驱动的模型预测控制电力系统机组组合优化 该程序复现文章《Feature-…

    2026年3月15日
    1
  • MyBatis 分页插件的实现原理

    MyBatis 分页插件的实现原理分页插件基本原理 使用 MyBatis 提供的插件接口 实现自定义插件 在插件的拦截方法内拦截待执行的 SQL 然后重写 SQL 根据 dialect 方言 添加对应的物理分页语句和物理分页参数

    2026年3月26日
    1
  • 二叉树的后序遍历非递归算法

    二叉树的后序遍历非递归算法1 对于树的遍历我们最常用的三种遍历方法分别是前序遍历 中序遍历和后序遍历 使用的方法是深度优先遍历树的每一个节点 这些遍历方法都是使用递归函数来进行实现的 在数据量大的情况下是比较低效的 原因在于系统帮助我们调用了一个栈并且做了诸如保护现场和恢复现场等复杂的操作 才使得遍历可以使用非常简单的代码来实现 所以我们可以模仿系统中调用的栈自己可以来写一下栈 模仿其中的过程就可以完成对于三种遍历算法的

    2026年3月17日
    2
  • SPRING中属性SCOPE的prototype是什么意思

    SPRING中属性SCOPE的prototype是什么意思关键字 spring 中属性 scope 的 prototype 是什么意思默认情况下 从 bean 工厂所取得的实例为 Singleton bean 的 singleton 属性 Singleton Spring 容器只存在一个共享的 bean 实例 默认的配置 Prototype 每次对 bean 的请求都会创建一个新的 bean 实例 二者选择的原则 有状态的 bean 都使用 Prototype 作用域 而

    2026年3月16日
    2
  • Ubuntu保存退出vim编辑器「建议收藏」

    Ubuntu保存退出vim编辑器「建议收藏」命令模式,从键盘上输入的任何字符都被作为编辑命令来解释,vi下很多操作如配置编辑器、文本查找和替换、选择文本等都是在命令模式下进行的。输入模式,从键盘上输入的所有字符都被插入到正在编辑的缓冲区中,被当作正文。1.编辑进入vi/vim后按字母“i”或“I”即可进入编辑状态(此时左下角会出现“插入”),另外还可以用a…

    2022年6月11日
    44
  • Qt的QFile

    Qt的QFile在这里可以说是Qt的帮助文档一样了!确定不进来看看QFile这个东西怎么用么!

    2022年6月14日
    92

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号