对称矩阵的压缩存储-数组下标计算

这篇具有很好参考价值的文章主要介绍了对称矩阵的压缩存储-数组下标计算。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 1、对称矩阵的压缩存储

        设矩阵的阶数为n,由于n阶对称矩阵中的数据元素基于其主对角线或副对角线对称,故而在存储时可将对称的两个相同数值的矩阵数据元素存储在同一个存储单元中。这样可以将个元素压缩在对称矩阵在一维数组中的表示,矩阵,算法,数据结构 即 对称矩阵在一维数组中的表示,矩阵,算法,数据结构个存储单元中。其元素下标与元素以及隐含元素在一维数组中的对应关系如下:

对称矩阵在一维数组中的表示,矩阵,算法,数据结构

 2、下标计算

        假设以一维数组存储压缩后的矩阵,则要求一维数组有对称矩阵在一维数组中的表示,矩阵,算法,数据结构个存储单元。有如下图堆成矩阵v,设为对称矩阵中的第i行第j列元素,k为一维数组中元素索引下标,此处以行序为主序存储下三角矩阵元素为例进行分析,何为行序大家可自行查询,此处不做分析,观察下列矩阵,在一维数组中的下标应当为0,下标为1,下标为3,以此类推,假设要求元素下标,其下标即为一维数组中在它前面的元素个数。

对称矩阵在一维数组中的表示,矩阵,算法,数据结构 

       仔细观察该矩阵可发现该矩阵的下三角可发现,每一行元素个数都是有规律的递增,且增量为1,这与等差数列的性质不谋而合,假设现要求的下标,无论在它所在行的什么位置,除去它之后它所在行都不是完整的行,因而计算其下标时应当使用等差数列前n项和公式计算它所在行的前面所有行元素个数之和再加上它所在行在它前面的元素个数之和,即为的下标,由此可总结出如下规律:

        对称矩阵在一维数组中的表示,矩阵,算法,数据结构

        其中由等差数列对称矩阵在一维数组中的表示,矩阵,算法,数据结构所得,大家可自己推算一番;是由于元素所在行除去其本身之外并不完成,不能代入等差数列进行计算,因而单独求其所在行在其前面的元素个数,即为所在列数减1。

        此处由于是以行序为主序存储矩阵下三角的方式对矩阵进行压缩,即i >= j时的情况,i < j的情况大家可自行推算,大体相同。

        此篇文章为学习过程中的心得斩获,如若错误之处,还望各位斧正!

 文章来源地址https://www.toymoban.com/news/detail-737609.html

 

 

到了这里,关于对称矩阵的压缩存储-数组下标计算的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据结构】三对角矩阵(带状矩阵)的压缩 数组下标转换

    王道书中给出定义如下: 书中没有给出具体的推导过程,在CSDN上也没搜到,因此我来发一篇(哈哈哈哈哈 推导过程如下: 首先除去第一行。 从第二行开始,当矩阵的下标为(i,j)的时候: 前面一定会有第一行的2个 会有从第2行开始到第i-1行的每行3个,因此是3(i-1-2+1)=3(i-2)

    2024年02月07日
    浏览(14)
  • 特殊矩阵的压缩存储(对称矩阵,三角矩阵和三对角矩阵)

    目录 1.对阵矩阵 2.三角矩阵 3.三对角矩阵(带状矩阵) 定义:若对一个n阶矩阵A中的任意一个元素 aᵢ,ⱼ 都有aᵢ,ⱼ=aⱼ,ᵢ (1≤i,j≤n),则称其为对称矩阵。 存储策略:只存储主对角线+下三角区(或主对角线+上三角区),以主对角线+下三角区为例,按照行优先把这些元

    2024年02月09日
    浏览(17)
  • 【数据结构】特殊矩阵的压缩存储(对称矩阵,三角矩阵和三对角矩阵)

    目录 1.对阵矩阵 2.三角矩阵 3.三对角矩阵(带状矩阵) 定义:若对一个n阶矩阵A中的任意一个元素 aᵢ,ⱼ 都有aᵢ,ⱼ=aⱼ,ᵢ (1≤i,j≤n),则称其为对称矩阵。 存储策略:只存储主对角线+下三角区(或主对角线+上三角区),以主对角线+下三角区为例,按照行优先把这些元

    2024年01月16日
    浏览(14)
  • 数据结构-拓展突破-特殊矩阵(对称矩阵,三角矩阵,三对角矩阵,稀疏矩阵)的压缩存储)

    对称矩阵的定义: 若n阶方阵中任意一个元素a,都有a(i,j)=a(j,i)则该矩阵为对称矩阵 也就是说对称矩阵的元素关于对角线对称。对角线上半部分称为上三角区,下半部分称为下三角区。 对称矩阵的压缩存储策略:只存储主对角线+下三角区(或主对角线+上三角区) 可以定义一维数

    2023年04月08日
    浏览(20)
  • 【数据结构】数组和字符串(五):特殊矩阵的压缩存储:稀疏矩阵——压缩稀疏行(CSR)

    【数据结构】数组和字符串(一):矩阵的数组表示   矩阵是以按行优先次序将所有矩阵元素存放在一个一维数组中。但是对于特殊矩阵,如对称矩阵、三角矩阵、对角矩阵和稀疏矩阵等, 如果用这种方式存储,会出现大量存储空间存放重复信息或零元素的情况,这样会造

    2024年02月05日
    浏览(19)
  • 【数据结构】数组(稀疏矩阵、特殊矩阵压缩、矩阵存储、稀疏矩阵的快速转置、十字链表)

    前几期期链接: 【数据结构】栈与队列的概念和基本操作代码实现 【数据结构】树与二叉树的概念与基本操作代码实现 k维数组的定义: k 维数组 D = { a j 1 , j 2 , . . . , j k } k维数组D={ a_{j_1, j_2, ..., j_k} } k 维数组 D = { a j 1 ​ , j 2 ​ , ... , j k ​ ​ } k 0 称为数组的维数,

    2024年04月09日
    浏览(55)
  • 【数据结构】数组和字符串(四):特殊矩阵的压缩存储:稀疏矩阵——三元组表

    【数据结构】数组和字符串(一):矩阵的数组表示   矩阵是以按行优先次序将所有矩阵元素存放在一个一维数组中。但是对于特殊矩阵,如对称矩阵、三角矩阵、对角矩阵和稀疏矩阵等, 如果用这种方式存储,会出现大量存储空间存放重复信息或零元素的情况,这样会造

    2024年02月05日
    浏览(19)
  • 将一维数组转换成矩阵

     借鉴了下面博客 Opencv将数组转化成图像显示出来的方法_Master_Xu_Soochow的博客-CSDN博客_opencv将数组转化为图片 Mat Array2Mat(int a[]){     Mat M(100,100,CV_8UC1);     for (int i = 0; i M.rows; ++i){         uchar *p = M.ptruchar(i);         for (int j = 0; j M.cols; ++j)             p[j] = a[i*wid + j];    

    2024年02月14日
    浏览(9)
  • Python 将一维数组或矩阵变为三维

    话不多说直接上代码: 可以看到,此时我们得到的三维数组,或者说矩阵所有的元素都是沿着 x 轴排列的。当然,也可以将 reshape 中的参数更改为以下形式: 关于为什么是这样,可以参考 numpy数组的坐标轴问题。 如果大家觉得有用,就请点个赞吧~

    2024年02月19日
    浏览(12)
  • C语言例题(二维数组)【转置矩阵】【成绩登记】【斐波那契】【简单矩阵查找】【螺旋数阵】【一维数组转二维数组】

    例一:转置矩阵 程序: 输出:通过b[j][i] = a[i][j];这一步实现了转置 进阶:用6个1~20内的随机数按行的顺序生成一个a[2][3]的矩阵,并输出它的转置矩阵 输出: 例2.登记某班三人的数学、英语两门课程的成绩。 分析:此类问题可以通过使用3个一维数组来解决,也可以通过使用

    2024年02月03日
    浏览(14)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包