特殊矩阵的压缩存储(对称矩阵,三角矩阵和三对角矩阵)

目录

1.对阵矩阵

2.三角矩阵

3.三对角矩阵(带状矩阵)


均假设数组的下标从0开始

1.对阵矩阵


定义:若对一个n阶矩阵A中的任意一个元素 aᵢ,ⱼ 都有aᵢ,ⱼ=aⱼ,ᵢ (1≤i,j≤n),则称其为对称矩阵。

 

存储策略:只存储主对角线+下三角区(或主对角线+上三角区),以主对角线+下三角区为例,按照行优先把这些元素放入到一维数组中,就得到了下面的样子的一维数组:

a₁₁a₂₁a₂₂a₃₁...aₙ,ₙ₋₂aₙ,ₙ₋₁aₙ,ₙ

一维数组的大小应该定义为 (1+n)*n/2, 此公式通过求和公式,将每行元素相加即可得到。

根据性质aᵢ,ⱼ=aⱼ,ᵢ可以得到矩阵所有元素与一维数组下标k的对应关系如下:

按照行优先存储原则,aᵢ,ⱼ是第几个元素?

答:因为是行优先,所以 aᵢ,ⱼ是第  1+2+...+i-1+j 个元素,即第 i*(i-1)/2+j-1个元素。

按照列优先存储原则,aᵢ,ⱼ是第几个元素?

答:因为是列优先,所以先算出前 j-1 行有多少个元素,由每列元素个数与列数 j 有关,可知每列的元素个数为 n-(j-1) 个,前 j-1 行即 n-(1-1) + n-(2-1) + n-(3-1) + ··· + n-(j-1-1)个元素,化简得前  j-1行有  n+(n-1)+...+(n-j+2) 个元素。接下来再加上第 j 行的元素,也就是 aᵢ,ⱼ 所处的那一行中, 前面的元素个数,个数为 i - j 个,综上 ​​​​​​​aᵢ,ⱼ  是第 n+(n-1)+...+(n-j+2)+(i-j)+1 个元素。

2.三角矩阵
 

下三角矩阵的存储思想:按行优先原则将下三角区域元素(包括主对角线元素)存入一维数组中,并在最后一个位置存储常量c。 

得到一维数组:

按照行优先存储原则,​​​​​​​aᵢ,ⱼ是第几个元素? 

上三角矩阵的存储思想:按行优先原则将上三角区域元素(包括主对角线元素)存入一维数组中,并在最后一个位置存储常量c。 一维数组和下三角矩阵的一样。

按照行优先存储原则,​​​​​​​aᵢ,ⱼ是第几个元素? 

3.三对角矩阵(带状矩阵)
 

存储思想:按行优先或列优先原则,只存储带状部分。 

 矩阵中3条对角线上的元素​​​​​​​aᵢ,ⱼ在一维数组中存放的下标为k=2i+j-3
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/76652.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【canal系】canal集群异常Could not find first log file name in binary log index file

这里先说明下这边使用的canal版本号为1.1.5 在描述这个问题之前,首先需要简单对于canal架构有个基本的了解 canal工作原理 canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议MySQL master 收到 dum…

Element--生成不定列的表格

1、对于一些场景,前端可能需要展示不定列数的数据;譬如考勤,可能有的人是一天一次上下班打卡,有的人是一天两次上下班打卡。这个时候统计就需要更具人员做不同的展示,不能固定在前端写死列的属性。 2、代码示例 &…

Vue + Element UI 前端篇(五):国际化实现

Vue Element UI 实现权限管理系统 前端篇(五):国际化实现 国际化支持 1.安装依赖 执行以下命令,安装 i18n 依赖。 yarn add vue-i18n $ yarn add vue-i18n yarn add v1.9.4 warning package-lock.json found. Your project …

重磅:百度李彦宏、中科院曾毅入选,《时代周刊》AI最有影响力100人!

2023年9月8日,《时代周刊》发布了“2023年AI领域最有影响力100人” 榜单。 榜单权威吗? 有必要介绍下《时代周刊》。 《Time》(时代周刊),1923年创刊于纽约,是美国公认的最重要的新闻杂志之一。《时代周刊》以报道精彩…

实例 | Python 实现 RSA 加解密

大家好,欢迎来到编程教室 ! 前阵子看到一篇英文文章[1],展示了如何用 Python 来实现 RSA 算法。不太熟悉 RSA 的朋友可以看一下一文搞懂 RSA 算法,里面对什么是 RSA,RSA 的数学原理进行了说明,并举了一个简…

pip和conda的环境管理,二者到底应该如何使用

关于pip与conda是否能混用的问题,Anaconda官方早就给出了回答 先说结论,如果conda和pip在相同环境下掺杂使用,尤其是频繁使用这两个工具进行包的安装,可能会导致环境状态混乱 就像其他包管理器一样,大部分这些问题均…

提升你的Android开发技能:从AR/VR沉浸到UI设计和故障排除

文章目录 探索最新AR/VR应用在教育、游戏、医疗等领域的应用教育领域游戏领域医疗领域 深入了解Android内存管理与性能优化的方法与技巧垃圾回收机制内存泄漏使用弱引用避免过度渲染内存优化图像优化延迟加载Android中的调试技术应用程序分析 分享如何提高Android应用的易用性和…

Leetcode算法入门与数组丨1. 数据结构与算法简介

文章目录 前言1 数据结构与算法1.1 数据结构1.2 算法 2 算法复杂度2.1 算法复杂度简介2.2 时间复杂度2.3 空间复杂度 3 总结 前言 Datawhale组队学习丨9月Leetcode算法入门与数组丨打卡笔记 这篇博客以及接下来几篇将会是一个 入门型 的文章,主要是自己学习的一个…

032:vue中三元运算, style、class、type、 event等多种场景示例

第032个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安装、引用,模板使…

VR全景广告——实体商家的营销新选择

前几年,大家出行不便,那个时候实体商家整天苦恼于没有客户,没有销量,一直到引入VR全景广告才算是有所好转。随着VR全景技术不断完善,许多行业、领域开始结合VR全景,例如景区、房地产、车企等都会利用VR全景…

CMS-织梦[dede]-通用免登发布插件

CMS-织梦[dede]-通用免登发布插件 1. 织梦通用免登陆发布插件功能说明2. 织梦通用免登陆发布接口使用说明2-1 下载插件2-2 安装插件3 对接火车头等采集工具 3 爬虫【古诗文网】示例[可选]测试火车头入库模型 使用火车头,简数采集器,八爪鱼等文章采集工具…

构造函数注入指定bean名称

配置类 Configuration public class ThreadPoolTaskExecutorConfig {Beanpublic ThreadPoolTaskScheduler syncScheduler() {ThreadPoolTaskScheduler syncScheduler new ThreadPoolTaskScheduler();syncScheduler.setPoolSize(10);syncScheduler.setThreadGroupName("s…

智慧公厕助推城市管理智能化和治理精细化

随着城市化进程的不断加快,城市管理面临着诸多挑战和问题。而智慧公厕作为城市数字化赋能的重要一环,正成为推动城市管理智能化和治理精细化的关键力量。本文将以智慧公厕头部厂家广州中期科技有限公司,所实施大量精品案例项目的实景实图&…

【深度学习】 Python 和 NumPy 系列教程(二):Python基本数据类型:3、字符串(索引、切片、运算、格式化)

目录 一、前言 二、实验环境 三、Python基本数据类型 3. 字符串(Strings) 1. 初始化 2. 索引 3. 切片 4. 运算 a. 拼接运算 b. 复制运算 c. 子串判断 d. 取长度 5. 格式化 a. 使用位置参数 b. 使用关键字参数 c. 使用属性访问 f-string…

计算机毕设之基于Hadoop+springboot的物品租赁系统的设计与实现(前后端分离,内含源码+文档+教程)

该系统基于Hadoop平台,利用Java语言、MySQL数据库,结合目前流行的 B/S架构,将物品租赁管理的各个方面都集中到数据库中,以便于用户的需要。在确保系统稳定的前提下,能够实现多功能模块的设计和应用。该系统由管理员功能…

Mybatis 框架 ( 四 ) QueryWrapper

4.5.Wrapper条件构造器 Wrapper : 条件构造抽象类,最顶端父类 AbstractWrapper : 用于查询条件封装,生成 sql 的 where 条件 QueryWrapper : Entity 对象封装操作类,不是用lambda语法 UpdateWrapper &am…

android注解之APT和javapoet

前言 前面我们已经讲过注解的基本知识,对于注解还不太了解的,可以去看一下之前的文章, android 注解详解_袁震的博客-CSDN博客。 之前我们在讲注解的时候,提到过APT和JavaPoet,那么什么是APT和JavaPoet呢&#xff1…

【Mysql】Mysql获取排班时间段中的休息时间段方法

在MySQL中,可以使用自连接(self-join)来获取上一条记录的结束时间和下一条记录的开始时间,并将它们组合成一条记录。首先,需要为表创建一个包含记录ID和时间信息的临时表,然后使用自连接获取相邻记录的时间…

【面试经典150 | 数组】移除元素

文章目录 写在前面Tag题目来源题目解读解题思路方法一:原地操作 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结构等…