Matlab稀疏矩阵
一、矩阵存储方式
MATLAB的矩阵有两种存储方式,完全存储方式和稀疏存储方式
1.完全存储方式
将矩阵的全部元素按列存储,矩阵中的全部零元素也存储到矩阵中。
2.稀疏存储方式
仅存储矩阵所有的非零元素的值及其位置,即行号和列号,显然这对于具有大量零元素的稀疏矩阵来说是十分有效的。
设
1 0 0 0
A= 0 5 0 0
2 0 0 7
是具有稀疏矩阵特征的矩阵,其完全存储方式是按列存储的全部12个元素
1,0,2,0,5,0,0,0,0,0,0,7
其稀疏存储方式如下:
(1,1),1,(3,1),2,(2,2),5,(3,4),7
括号内为元素的行列位置,后面为元素值。
当矩阵非常的“稀疏”时,会有效的节省存储空间。
二、稀疏存储方式的产生
1.将完全存储方式转化为稀疏存储方式
A=sparse(S);将S矩阵转换为稀疏矩阵A;
sparse(m,n);产生m*n的所有元素都为0的稀疏矩阵
sparse(u,v,S);S为建立系数矩阵的非零元素,u(i),v(i)分别为S(i)的行和列下标,S,u,v为等长向量。
[u,v,S]=find(A);返回矩阵A中非零元素的下标和元素,返回值可以作为sparse(u,v,S);的参数
full(A);返回和稀疏存储方式A对应的完全存储方式。
例如
X=[2,0,0,0,0;0,0,0,0,0;0,0,0,5,0;0,1,0,0,-1;0,0,0,0,-5]
A=sparse(X)
A=
(1,1) 2
(4,2) 1
(3,4) 5
(4,5) -1
(5,5) -5
A就是X的稀疏存储方式。
2.产生稀疏存储矩阵
sparse可以讲完全存储方式转换为稀疏存储方式,那么,当使用稀疏矩阵时,要先产生完全存储方式的矩阵,然后再转换,这显然是不可取的,MATLAB有自己产生稀疏矩阵的函数spconvert:
B=spconvert(A);A为一个m*3或m*4的矩阵,A的每一列的意义分别为:
(i,1)第i非零元素所在行
(i,2)第i非零元素所在列
(i,3)第i非零元素的实部
(i,4)第i非零元素的虚部
Matlab稀疏矩阵的更多相关文章
- matlab 稀疏矩阵(sparse matrix)
参数的设置:spparms() spparms('spumoni', 3);:Set sparse monitor flag to obtain diagnostic output 1. 创建稀疏矩阵 ...
- Matlab 稀疏矩阵函数
eye 单位矩阵zeros 全零矩阵ones 全1矩阵rand 均匀分布随机阵genmarkov 生成随机Markov矩阵linspace 线性等分向量logspace 对数等分向量logm 矩阵对数 ...
- 改写libsvmread读取多标记数据集
在libsvm和liblinear软件包里有一个C函数叫libsvmread,这个函数的作用是把如下格式的文本文件\begin{align*} 1 & \ \ *:* \ \ *:* \\ - ...
- matlab——sparse函数和full函数(稀疏矩阵和非稀疏矩阵转换)
函数功能:生成稀疏矩阵 使用方法 :S = sparse(A) 将矩阵A转化为稀疏矩阵形式,即矩阵A中任何0元素被去除,非零元素及其下标组成矩阵S.如果A本身是稀疏的,sparse(S)返回S. S ...
- MATLAB矩阵求值和稀疏矩阵
方阵的行列式: det(A) 矩阵线性无关的行数或列数,称为矩阵的秩. rank(A) 求3~20阶魔方矩阵的秩 for n=3:20 rank(magic(n)) end 矩阵的迹等于矩阵的对角线元 ...
- 【原创】开源Math.NET基础数学类库使用(03)C#解析Matlab的mat格式
本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 前言 ...
- Matlab中的一些小技巧
(转于它处,仅供参考) 1.. Ctrl+C 中断正在执行的操作 如果程序不小心进入死循环,或者计算时间太长,可以在命令窗口中使用Ctrl+c来中断.MATLAB这时可能正疲于应付,响应会有些滞后. ...
- Maya 与 Matlab 数据互联插件使用教程
实验室做网格处理方面的算法,写界面很麻烦,所以有了利用maya和matlab进行数据连通的念头,于是有了这个插件. 这个插件可以把maya的网格数据导入matlab之中,完成计算之后重新返回maya. ...
- MATLAB命令大全
一.常用对象操作:除了一般windows窗口的常用功能键外.1.!dir 可以查看当前工作目录的文件. !dir& 可以在dos状态下查看.2.who 可以查看当前工作空间变量名, whos ...
随机推荐
- 【自己动手】sublime text插件开发
今天是五四青年节,在此先祝大家节日快乐!!! --------------------------------------------华丽的分界线--------------------------- ...
- webpack 学习笔记 01 使用webpack的原因
本系列文章实际上就是官网文档的翻译加上自己实践过程中的理解. 伴随着websites演化至web apps的过程,有三个现象是很明显的: 页面中有越来越多的Js. 客户端能做的事情越来越多. 越来越少 ...
- TreeSet,Comparator
ThreeSet能够对集合中的对象排序,当TreeSet想集合中加入一个对象时,会把它插入到有序的对象序列中. ThreeSet自带了一个排序方法,这个方法规定了一般数据的排序规则,如果用户想要规定自 ...
- 在Windows下使用BAT调度存储在资源库中的KTR
描述: 在Windows下使用BAT调度存储在资源库中的KTR 准备环境: 1.ktr文件(该KTR必须是存储在资源管库中的) 2.bat文件 @echo off D: cd D:\software\ ...
- SSH使用缩写
需要经常ssh到其它机器上,但如果每次都使用主机命名或ip地址,那挺难受的.这里有2个方法可以在ssh登陆时缩写(简写)主机名. 1. 在~/.ssh中添加config文件 [toughhou@hd1 ...
- 使用checked关键字处理“溢出”错误
在进行算术运算时,可以使用checked关键字有效处理溢出错误,使用checked关键字可能对程序的性能会有一点点的影响,这是一种以牺牲性能换取健康的做法. private void button1_ ...
- Android之Activity的四种启动模式
当应用运行起来后就会开启一条线程,线程中会运行一个任务栈,当Activity实例创建后就会放入任务栈中.Activity启动模式的设置在AndroidManifest.xml文件中,通过配置Activ ...
- Windows PowerShell ISE
Windows PowerShell 集成脚本环境 (ISE) 是 Windows PowerShell 的主机应用程序.在 Windows PowerShell ISE 中,可以在单一 Window ...
- KafkaOffsetMonitor使用方法
(1)下载jar包 去网上搜索KafkaOffsetMonitor即可. 我这里共享了我的百度云连接:http://yun.baidu.com/s/1nvGjbDn 如果某一天我这个取消共享了,大家去 ...
- Qt 读取txt文件乱码的解决办法
Qt 读取txt文本乱码问题 2015-05-20 15:46 方法一:使用QString的fromLocal8Bit()函数 复制代码 QFile txtfile(filePath); ...