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

目录

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,一经查实,立即删除!

相关文章

Cookie、Session和Token三者区别以及各自应用场景

一、三者区别 存储位置:Session和Cookie分别存储在服务器端和客户端,而Token则是在客户端和服务器端之间传递的。安全性:Session相对于Cookie来说更安全,因为Session存储在服务器端,不容易被恶意攻击者获取。而Cookie…

在C/C++中使用vcpkg

文章目录 介绍vcpkg 入门安装vcpkg为您的项目安装库将 vcpkg 与 CMake 结合使用 介绍 如今,现代语言(例如Go)通常提供集成的包管理来提取库的所有依赖项。然而,许多软件都是用 C/C 创建和维护的,并且没有现成的包管理…

【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…

【精读Uboot】SPL阶段的board_init_r详细分析

对于i.MX平台上的SPL来说,其不会直接跳转到Uboot,而是在SPL阶段借助BOOTROM跳转到ATF,然后再通过ATF跳转到Uboot。 board_init_f会初始化设备相关的硬件,最后进入board_init_r为镜像跳转做准备。下面是board_init_r调用的核心函数…

C++ 多线程

目录 目录 多线程的创建与执行 多线程的互斥 1. 创建一个mutex对象&#xff0c;lock(),unlock() 2. 借助lock_guard 3. unique_lock: lock_guard的升级加强版 多线程的创建与执行 1. C借助标准库<thread>来实现。将函数名放入线程中即可&#xff0c;如果函数有参数…

Element--生成不定列的表格

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

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

Vue Element UI 实现权限管理系统 前端篇&#xff08;五&#xff09;&#xff1a;国际化实现 国际化支持 1.安装依赖 执行以下命令&#xff0c;安装 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日&#xff0c;《时代周刊》发布了“2023年AI领域最有影响力100人” 榜单。 榜单权威吗&#xff1f; 有必要介绍下《时代周刊》。 《Time》&#xff08;时代周刊&#xff09;,1923年创刊于纽约&#xff0c;是美国公认的最重要的新闻杂志之一。《时代周刊》以报道精彩…

实例 | Python 实现 RSA 加解密

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

CTreeCtrl自绘

CSWTreeCtrl.h&#xff09; #pragma once#define _OWNER_DRAWN_TREE // 自绘CTreeCtrl&#xff0c;可支持背景图片显示功能class CSWTreeCtrl : public CTreeCtrl {DECLARE_DYNAMIC(CSWTreeCtrl)// 成员私有结构定义// 构造/析构函数 public:CSWTreeCtrl();virtual ~CSWTreeC…

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

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

提升你的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算法入门与数组丨打卡笔记 这篇博客以及接下来几篇将会是一个 入门型 的文章&#xff0c;主要是自己学习的一个…

Java FTP按关键字批量下载文件

一、所需jar <dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>3.8.0</version></dependency> 二、工具类 import java.io.*; import java.net.URLConnection; import java.util.A…

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

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

c++标准库的错误代码

cppreference的std::errc: std::errc - cppreference.com 对应定义(come from: 2022\Community\VC\Tools\MSVC\14.33.31629\include\xerrc.h) enum class errc { // names for generic error codesaddress_family_not_supported 102, // EAFNOSUPPORTaddress_in_use …

Hystrix Readed time out,看我这一篇就让你彻底解决!

在说这个问题的时候&#xff0c;作者真心想吐槽&#xff0c;由于作者在一个特殊的环境无法访问外网&#xff0c;所以用了度娘去查&#xff0c;发现搜索到的结果真的没啥用&#xff0c;有的根本就说不清为啥这么配置解决问题&#xff0c;有些简直的恶心一顿抄&#xff0c;有些连…

Python爬虫技术在SEO优化中的关键应用和最佳实践

大家好&#xff01;今天我要和大家分享一个关于SEO优化的秘密武器&#xff1a;Python爬虫技术。在这篇文章中&#xff0c;我们将探讨Python爬虫在SEO优化中的关键应用和最佳实践。无论您是一名SEO专家、网站管理员&#xff0c;还是对优化网站曝光度感兴趣的初学者&#xff0c;都…

《Effective Java》知识点(2)--对于所有对象都通用的方法

10. 覆盖equals时请遵守通用约定 10.1 不要轻易覆盖equals方法&#xff0c;除非迫不得已。因为&#xff1a; 10.1.1 类的每个实例本质上都是唯一的。 10.1.2 类没有必要提供”逻辑相等“的测试功能。 10.1.3 超类已经覆盖了equals&#xff0c;超类的行为对于这个类也是合适…

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

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