Zigzag逆扫描代码 MATLAB版

即将一个1 * k 长度的向量,逆扫描为 M * N 的矩阵(如果 k < M * N,则在 M * N 的矩阵中用 0 补齐;若 k > M * N,则向量会被截断)。

代码如下,仅供参考。

function mtr = izigzagScan(vec, m, n)

% izigzagScan(vec, m, n) Inverse zigzag scan.

% mtr = izigzagScan(vec, m, n) inverse zigzag scan of vec, and the target

% matrix is m-by-n. The input parameter vec is an 1-by-k vector. If the

% length of vector is smaller than the size of mtr (i.e. k < m*n), then, the

% pargram will use 0 to fill the matrix. If k > m*n, the vector will be truncated.

%

% version: v1.0

% author: tianlan

% time: Dec 16, 2016

% CHECK INPUT ARGUMENTS

if nargin < 3

error('Not enough input arguments!');

elseif nargin > 3

error('Too many input arguments!');

end

% Get length of vector.

[mv,nv,tv] = size(vec);

if tv ~= 1 || mv ~=1

error('The input vector needs to be 1-by-k vector!');

end

if nv < m*n % if nv < m*n, then, use 0 to fill the matrix.

vec = [vec, zeros(1,m*n-nv)];

end

% REVERSE SCAN A VECTOR BY USING ZIGZAG ORDER.

mtr = zeros(m,n);

% zigzag scan.

x = 1;

y = 1;

vecNum = 0;

vecNum = vecNum + 1;

mtr(x,y) = vec(1,vecNum);

while 1

% arrive right-up border, needs to change direction.

if (y+1) <= n && x == 1 % towards right one step.

y = y + 1;

elseif (y+1) > n && (x+1) <= m % towards down one step.

x = x + 1;

else

break;

end

vecNum = vecNum + 1;

mtr(x,y) = vec(1,vecNum) ;

% judge the scan process is arrived the right-down corner (i.e. mtr(m,n)) or not.

if x == m && y == n

break;

end

% scan the matrix towards with left-down direction.

while (y-1) >= 1 && (x+1) <= m

y = y - 1;

x = x + 1;

vecNum = vecNum + 1;

mtr(x,y) = vec(1,vecNum);

end

% arrive the left-down border, needs to change direction.

if (x+1) <= m && y == 1% towards down one step.

x = x + 1;

elseif (y+1) <= n && x == m % towards right one step.

y = y + 1;

else

break;

end

vecNum = vecNum + 1;

mtr(x,y) = vec(1,vecNum);

% judge the scan process is arrived the right-down corner (i.e. mtr(m,n)) or not.

if x == m && y == n

break;

end

% scan the matrix towards with right-up direction.

while (x-1) >= 1 && (y+1) <= n

x = x - 1;

y = y + 1;

vecNum = vecNum + 1;

mtr(x,y) = vec(1,vecNum);

end

end

zigzag扫描matlab,Zigzag逆扫描相关推荐

  1. zigzag扫描matlab,ZIGZAG扫描的MATLAB实现 | 学步园

    转自阿须数码,用MATLAB实现MPEG中的 ZIG-ZAG 扫描.觉得有点研究价值,实现的方法也很巧妙. 下面给一个参照MPEG提供的方法: === function b=zigzag(a) % 这 ...

  2. zigzag扫描matlab,ZIGZAG扫描的MATLAB实现

    用matlab实现MPEG中的 ZIG-ZAG 扫描.觉得有点研究价值,实现的方法也很巧妙. 下面给一个参照MPEG提供的方法: === function b=zigzag(a) % 这是参照 Uni ...

  3. SVAC1.0逆扫描反变换反量化分析

    ###Date: 2017/10/17 一.逆扫描 根据帧场的不同,场大小的不同,8x8块和4x4块的扫描方式定义如下:

  4. HEVC逆扫描之三:TU逆扫描过程

    注:HM代码版本为HM-16.2+SCM-3.0rc1/. 对应TDecSbac::parseCoeffNxN()函数解析.暂时先忽略掉几个模式:pcCU->getCUTransquantByp ...

  5. ZigZag 与 反ZigZag编码

    2019独角兽企业重金招聘Python工程师标准>>> 如图所示,ZigZag编码就是将 8 x 8 的矩阵块按照箭头运动方向重新排列 在 Jpeg 图像编码中主要用于 RLE (R ...

  6. Nmap扫描教程之基础扫描详解

    Nmap扫描教程之基础扫描详解 Nmap扫描基础扫描 当用户对Nmap工具了解后,即可使用该工具实施扫描.通过上一章的介绍,用户可知Nmap工具可以分别对主机.端口.版本.操作系统等实施扫描.但是,在 ...

  7. 漏洞扫描工具_Vulmap漏洞扫描工具

    本文来源于https://github.com/zhzyker/vulmap 已与作者联系 作者同意发送本文章 Vulmap目前支持以下漏洞 +-------------------+-------- ...

  8. mysql 全表扫描、全索引扫描、索引覆盖(覆盖索引)

    full index scan:全索引扫描,查询时,遍历索引树来获取数据行.如果数据不是密集的会产生随机IO 在执行计划中是Type列,index full table scan:通过读物理表获取数据 ...

  9. 4x4矩阵键盘工作原理及扫描程序_AVR单片机扫描4X4矩阵键盘并数码管显示程序

    /* program name :   keyboard ; 功能描述 :  扫描16个按键(4X4),并把键值显示在数码管上(两位); 要点 :  在扫描按键时运用了比较复杂的两个for()循环嵌套 ...

最新文章

  1. 56.4 AP!超越YOLOv4,更快更强的CenterNet2来了!
  2. Python 计算机视觉(三)—— 数字图像处理基本操作
  3. 福建物联网产业发展势头良好
  4. cron表达式 每隔8小时_cron表达式详解
  5. JAVA——实验肆——多线程
  6. 蛋白对接_JCIM | 金属蛋白分子对接程序哪家强?七种对接程序的基准测试
  7. android https通过载入pfx证书获取数据
  8. 快速安装Pytorch
  9. pythonddos防御_一个自动封IP防御DDOS脚本
  10. 王者荣耀美化包制作教程(一;进阶)
  11. 【实践】如何用python绘制词云图(文本数据可视化)?
  12. [C#]Excel画斜线以及Excel宏的利用
  13. 什么是rip协议其优缺点_ospf和rip 优缺点
  14. python制作四川话并生成证书,可打包为exe
  15. Sort exceeded memory limit of 104857600 bytes 解决方案
  16. 哪些方面的纠纷可以去北京互联网法院提起诉讼?
  17. 百分点数据科学实验室:产品生命周期管理创新应用落地实践
  18. Linu中的网络配置(设置ip,网关(路由功能),dns),虚拟机上网
  19. 年薪50万开发者相亲失败:程序员,别输在不会说话上
  20. C++ sprintf 方法使用示例( for循环数组,字符串拼接、删除、格式化等)

热门文章

  1. 3、Windows之CMD装逼命令————CMD命令打开网页(让人一看你就是个电脑高手)
  2. CCNA第三天(交换机)
  3. 事件10001,10016,10037
  4. 通过movie_id来查询数据库获取电影名字和平均得分
  5. Pcap数据包资源下载汇总-恶意威胁流量
  6. 2d游戏碰撞检测C语言,2D游戏中的碰撞检测:圆形与矩形碰撞检测(Javascrip版)...
  7. 微信小程序真机调试,苹果用户记得打开本地网络
  8. 工作中可能用到的——集中式版本控制系统SVN
  9. 怎么安装LINUX系统
  10. Ureal:用ue4做出游戏中的爆炸特效真实感和力量感