假如说有一个矩阵A =  1, 3, 0, 0

0, 1, 0, 0

0, 0, 3, 0

0, 0, 5, 1

共6个有效点。

通常存储稀疏矩阵用三元组,比如c语言,

//为了方便跟后面matlab的对比,下标从1开始

int r[6] = [1, 1, 2, 3, 4, 4];//row index

int v[6] = [1, 2, 1, 3, 5, 1];//value of element

int c[6] = [1, 2, 2, 3, 3, 4];//column index

那么所需要的存储空间是,4 * 6 + 4 * 6 + 8 * 6 = 96 bytes

而在matlab中,存储的是三个矩阵(当然啦,实际上是一片连续的空间)

第1个矩阵r存各个元素的row index,

第2个矩阵v存各个元素的value,这两部分跟上面c语言的一样

第3个矩阵h存各列的头指针(指向第2个矩阵中的各列)+ 1个标志矩阵结束的 flag 指针

(实际上这个flag指针的位置跟在v数组之后,注意是这个指针本身,不是它的内容,它的内容应该是一个定值)

那么所需空间就是4 * (4 + 1) + 4 * 6 + 8 * 6 = 92 bytes

访问

不同就不同在这第3个矩阵上,接下来我们只讨论这第3个矩阵

c中存储下标用int,占4个字节,matlab存的是指针,也是占4个字节

假如一个稀疏矩阵的真实size为m*n,有效元素有k个

那么c中的方式的内存花费是4*k

matlab中为4 * (n+1)

当k = n + 1时花费相同。但是实际应用中k一般是大于n的,matlab的方式实践效果更好。

访问方式如下:

如A(4, 3),

由于是第3列,先通过访问column pointer数组的第3个元素h(3),得到了一个指向第3列元素的头指针

也就是定位到v数组v(4) = 3处

那么在此指针之后,还有多个值,哪个才是第4行的呢?

从此处开始遍历v数组,若r(i)等于要寻找的目标行号,就返回v(i);

若指针指向了结束标志位,就说明没有存这个元素,返回0

matlab里矩阵操作相关函数,SP表稀疏矩阵,A表完全矩阵

A = sparse(r, c, v, m, n),其中rcv均为列向量,涵义就是上方三元组的涵义,mn为系数矩阵的真实size

[r, c, v] = find(SP),抽取稀疏矩阵的数据为三元组

SP = sparse(B),直接用完全矩阵构造稀疏矩阵

A = full(SP),将稀疏矩阵补全为完全矩阵

whos,返回存储信息

nnz(SP),返回稀疏矩阵中非零元素的个数

nonzeros(A),返回稀疏矩阵中非零元素组成的列向量



matlab 稀疏存储,matlab稀疏矩阵存储相关推荐

  1. matlab 稀疏随机矩阵,MATLAB中的稀疏数组

    本文概述 声明普通数组后, MATLAB将为数组中的每个元素创建一个内存位置.例如, 函数a =眼睛(10)将创建100个元素, 这些元素排列为10 x 10结构.在此数组中, 其中90个元素为零! ...

  2. matlab 稀疏随机矩阵,Matlab 稀疏矩阵函数

    Matlab 稀疏矩阵函数 (2012-03-08 09:54:54) 标签: 杂谈 eye 单位矩阵 zeros 全零矩阵 ones 全1矩阵 rand 均匀分布随机阵 genmarkov 生成随机 ...

  3. matlab稀疏矩阵方程,Matlab命令集——稀疏矩阵函数

    基本稀疏矩阵 spdiags :生成稀疏带状矩阵 speye :单位稀疏矩阵 sprand :随机稀疏矩阵 sprandn :正态分布的随机稀疏矩阵 sprandsym:生成稀疏对称随机矩阵 满阵和稀 ...

  4. Matlab读取TDMS文件并存储为mat格式

    前言 TDMS是labVIEW常用的一种数据存储格式,其以二进制的方式进行存储,特点是占用磁盘空间小,且支持数据流高速写盘,常见于高速采集系统.若是需要用Matlab对其进行数据处理,不可避免的需要使 ...

  5. 电力系统:节点导纳矩阵的稀疏存储(稀疏矩阵)——C语言十字链表实现

    最近学习电力系统分析这门专业课,发现计算机分析在这门课上非常重要. 大电网的等值电路参数计算.导纳矩阵存储.潮流计算等都需要在电脑上编程实现. 打算试试用拿手的纯C来实现导纳矩阵的存储,也就是实现一个 ...

  6. python变量存为matlab,详解如何在python中读写和存储matlab的数据文件(*.mat)

    背景 在做deeplearning过程中,使用caffe的框架,一般使用matlab来处理图片(matlab处理图片相对简单,高效),用python来生成需要的lmdb文件以及做test产生结果.所以 ...

  7. matlab 如何读数据文件,详解如何在python中读写和存储matlab的数据文件(*.mat)

    背景 在做deeplearning过程中,使用caffe的框架,一般使用matlab来处理图片(matlab处理图片相对简单,高效),用python来生成需要的lmdb文件以及做test产生结果.所以 ...

  8. 三元组顺序表表示的稀疏矩阵加法_Matlab入门教程 第 2 章 Matlab矩阵处理之稀疏矩阵...

    2.5 稀疏矩阵 2.5.1 矩阵的存储方式 完全存储方式 稀疏存储方式 稀疏存储方式只存储矩阵的非零元素的值及其位置,即行号和列号. ❝ 注意:采用稀疏存储方式时,矩阵元素的存储顺序并没有改变,也是 ...

  9. 带你了解两种线性规划的方法:稀疏矩阵存储和预处理

    摘要:本文为大家带来线性规划的稀疏矩阵存储和数据预处理. 本文分享自华为云社区<线性规划--稀疏矩阵>,原文作者:Bale10 . 随着AI时代的发展,线性规划问题的规模越来越大是一种必然 ...

  10. CSR稀疏矩阵存储方式

    矩阵可分为稠密矩阵和稀疏矩阵,对于稀疏矩阵而言,使用同样的内存来存储这个矩阵显然是对内存的浪费,那么我们就可以想办法将矩阵中所有的o元素挥着不相关元素剔除,怎么剔除,第一种方法是通过三个一维矩阵来存储 ...

最新文章

  1. Java 中的字符串(String)与C# 中字符串(string)的异同
  2. 9.Vue 表单输入绑定
  3. 【Java】翻转字符串中的每个单词
  4. weblogic 12C集群环境下的session复制
  5. SQLi LABS Less 27 联合注入+报错注入+布尔盲注+时间盲注
  6. 2018抖音数据研究报告完整版,你喜欢的网红画像到底是怎样?
  7. jdk Integer 具体实现
  8. CellCtrl控件完美破解研究
  9. Ubuntu20破解管理员root密码忘记密码找回
  10. 熊出没之伐木机器人_盘点熊出没中李老板的五大伐木工,光头强无人能代替
  11. 为什么天蝎座出互联网大佬,我来告诉你原因!
  12. Android USB Tethering的实现以及代码流程
  13. Mysql innodb 间隙锁
  14. ESP-IDF遇到的关于环境变量的问题
  15. 系统入门(1):安卓系统bootloader模式是什么?如何进入bootloader
  16. 【分层强化学习】HAC论文及代码
  17. 数据库并发事务存在的问题(脏读、不可重复读、幻读等)
  18. mybatisplus代码生成报错:Exception in thread “main“ java.lang.NoClassDefFoundError: org/apache/velocity
  19. pandorabox开启ssr_华硕及 PandoraBox 固件如何启用 SSH 和SFTP 连接
  20. 怎么恢复苹果回收站删除的文件呢?

热门文章

  1. 几个HTML的单标签,HTML常用的几个标签
  2. 甘肃省计算机二级考试培训,甘肃省2017年计算机二级考试网上报名须知及流程...
  3. 优酷、腾讯、咪咕争相布局,体育综艺为何备受青睐?
  4. Java基础之账本小项目
  5. sheng的学习笔记-activeMQ框架原理
  6. Maven 的assembly插件使用
  7. jpa的多表关联查询
  8. GOOGLE地球浏览器分析(一):地图服务产业分析 1
  9. pip 报错Traceback (most recent call last):
  10. centos当前目录表示方法_centos系统目录详解和常用命令