zigzag模式提取矩阵元素

zouxy09@qq.com

http://blog.csdn.net/zouxy09

这节博文只是为了上传个代码而已。希望对需要的人有用。zig-zag模式如下图所示。它可以用来按照以下的顺序来提取一个矩阵的元素。

这个东西用在哪呢?用在离散余弦变换的系数提取里面。离散余弦变换(DCT)是种图像压缩算法,JPEG-2000好像就是用它来进行图像压缩的。DCT将图像从像素域变换到频率域。然后一般图像都存在很多冗余和相关性的,所以转换到频率域之后,只有很少的一部分频率分量的系数才不为0,大部分系数都为0(或者说接近于0),这样就可以进行高效的编码,以达到压缩的目的。下图的右图是对lena图进行离散余弦变换(DCT)得到的系数矩阵图。从左上角依次到右下角,频率越来越高,由图可以看到,左上角的值比较大,到右下角的值就很小很小了。换句话说,图像的能量几乎都集中在左上角这个地方的低频系数上面了。

而且,系数的重要性一定程度上是按照zigzag模式进行排列的。所以就可以通过zigzag模式来提取这个矩阵前面的重要性的元素,作为这个图像在频率域上的特征,然后可以拿去做分类啥的,以达到降维的功效。

具体代码如下:

zigzagCoder.m

function dctVector = zigzagCoder(A, needNumCoefficient)
%// Select elements of a square matrix using zig-zag pattern
%// Author : zouxy
%// Date   : 2013-10-28
%// HomePage : http://blog.csdn.net/zouxy09
%// Email  : zouxy09@qq.com%% input: A : square matrix
%%        needNumCoefficient : how many coefficient you want to maintain
%% output: dctVector: vector contain coefficients by colif size(A, 1) ~= size(A, 2)display('Warning: your matrix should be square!');if size(A, 1) > size(A, 2)A = A(1:size(A, 2), 1:size(A, 2));elseA = A(1:size(A, 1), 1:size(A, 1));endendif needNumCoefficient > (size(A, 1) * size(A, 2))needNumCoefficient = size(A, 1) * size(A, 2);endA = A';count = 1;    for dim_sum = 2 : (size(A, 1) + size(A, 2))if mod(dim_sum, 2) == 0for i = 1 : size(A, 1)if dim_sum - i <= size(A, 1) & dim_sum - i > 0dctVector(count) = A(i, dim_sum - i);count = count + 1;endendelsefor i = 1 : size(A, 1)if dim_sum - i <= size(A, 1) & dim_sum - i >0dctVector(count) = A(dim_sum - i, i);count = count + 1;end                   end   endenddctVector = dctVector(1:needNumCoefficient);dctVector = dctVector';end

例如:

testZigzagCode.m

mat = [1 2 6; 3 5 7; 4 8 9];
num = size(mat, 1) * size(mat, 2);
code = zigzagCoder(mat, num);
disp(mat);
disp(code');

输入方阵:

1    2     6

3    5     7

4    8     9

输出向量:

1    2     3     4    5     6     7    8     9

zigzag模式提取矩阵元素相关推荐

  1. matlab取矩阵元素的模,matlab – 提取矩阵元素

    冈瑟已经走上了正轨.您想要选择一个元素if >非零的行cumsum是1 AND >非零的列cumsum是1 AND >元素本身不为零. 以下代码解决了这个问题: A = [0, 0, ...

  2. Zig-Zag模式填充矩阵

    描述 在一个mn的数组中,按照Zig-Zag的顺序依次填写1,2,3,-mn. 输入 两个整数m,n表示m*n的矩阵,整数间以空格隔开.2<=m,n<100 输出 输出矩阵 样例1 输入 ...

  3. python提取矩阵元素_python-如何获取矩阵中某个元素周围的所有...

    如果您不关心效率,请使用scipy: import scipy, scipy.ndimage def nb_vals(matrix, indices): matrix = scipy.array(ma ...

  4. python提取矩阵元素_python获取array中指定元素的示例

    python获取array中指定元素的示例 对于array,如2-D的array,如何取指定元素 设array为3*10的shape s = array([[ 0, 1, 2, 3, 4, 5, 6, ...

  5. 从矩阵中提取对角线元素;将一维数组转换为对角线矩阵:np.diag()函数

    [小白从小学Python.C.Java] [计算机等级考试+500强双证书] [Python-数据分析] 从矩阵中提取对角线元素 将一维数组转换为对角线矩阵 np.diag()函数 选择题 下列说法错 ...

  6. MATLAB提取矩阵中的一部分

    MATLAB对矩阵的操作十分灵活,下面对最近遇到的进行总结: 格式A(m,n),用于提取矩阵A中符合m,n要求的部分 1.提取某个元素,则m,n为数字标量,如A(2,3)为第二行第三列的元素. 2.提 ...

  7. Matlab提取矩阵行数与列数

    一.概述 Matlab提取矩阵行数与列数主要用到size()这个函数 二.详解 1. t=size(T); 只用一个参数接受结果时,size返回一个行向量,第一个元素代表行数,第二个元素代表列数. 2 ...

  8. matlab 矩阵 列 逆序,matlab对矩阵/向量的常用操作(拼接矩阵、向量逆序、改变矩阵形状、求行阶梯形矩阵、提取矩阵的一部分等)...

    几乎所有变量在matlab中都可以视为矩阵(1 x 1元素,1 x n向量,m x n矩阵等),matlab中对矩阵/向量的操作非常多,个人认为对矩阵的操作是体现matlab功底的地方:灵活搭配使用这 ...

  9. MATLAB提取矩阵一部分

    MATLAB对矩阵的操作十分灵活,下面对最近遇到的进行总结: 格式A(m,n),用于提取矩阵A中符合m,n要求的部分 1.提取某个元素,则m,n为数字标量,如A(2,3)为第二行第三列的元素. 2.提 ...

最新文章

  1. 修改闭包内使用的外部变量
  2. java springMVC SSM 操作日志 4级别联动 文件管理 头像编辑 shiro redis
  3. 【渝粤题库】陕西师范大学202012 刑事诉讼法专论 作业
  4. 生产环境下的负载均衡配置
  5. 8086汇编语言实现8253计时器对时且实时定点显示时间(全注释)
  6. 0基础学python有多难-0基础纯小白学Python,请注意这2个坑
  7. python 输出颜色的设置
  8. git tag标签操作
  9. 【C++】常用算数生成算法
  10. C++——WebServer服务器项目
  11. 城市级智能网联招投标项目情况全扫描(2021版)
  12. 关闭apache自动目录列表功能的三种方法
  13. 3717 bLue的文件查找器
  14. Android 字体自适应屏幕的方法
  15. android蓝牙设备类型设置 dev class设置
  16. 程序员日常照片大合集!快来大饱眼福!
  17. 微信小程序开发(六)——服务器
  18. 利用计算机求解一个实际问题的步骤是,数学在计算机科学的应用.doc
  19. python中的super是什么?
  20. PostgreSQL的psql中的AutoCommit

热门文章

  1. java3d曲面图开发_web三维图表的开发
  2. linux磁盘划分注意,划分磁盘阵列注意问题
  3. 软考网络工程师学习笔记3-广域通信网
  4. AI人才大战硝烟袅袅,缺口该如何填补?
  5. java将复选框添加到表格_Element表格嵌入复选框以及单选框
  6. 动态网页开发技术(一):Servlet
  7. 小汤学编程之JAVA基础day01——JAVA基本概念、第一个JAVA程序
  8. 谷歌浏览器不能安装离线插件——可行方法
  9. Vijos1240 朴素的网络游戏
  10. C语言 float、double数据在内存中的存储方式