sparse函数

功能:Create sparse matrix-创建稀疏矩阵

用法1:S=sparse(X)——将矩阵X转化为稀疏矩阵的形式,即矩阵X中任何零元素去除,非零元素及其下标(索引)组成矩阵S。 如果X本身是稀疏的,sparse(X)返回S。

例如:

A=

0     2     0

4     0     6

7     0     0

B=sparse(A)=

(2,1)        4

(3,1)        7

(1,2)        2

(2,3)        6

用法2:S = sparse(i,j,s,m,n,nzmax)——由i,j,s三个向量创建一个m*n的稀疏矩阵(上面的B矩阵形式),并且最多含有nzmax个元素。

例如:

B=sparse([1,2,3],[1,2,3],[0,1,2],4,4,4)

B =

(2,2)        1

(3,3)        2

其中i=[1,2,3],稀疏矩阵的行位置;j=[1,2,3],稀疏矩阵的列位置;s=[0,1,2],稀疏矩阵元素值。 其位置为一一对应。

m=4(>=max(i)),n=4(>=max(j)) (注:m和n的值可以在满足条件的范围内任意选取),用于限定稀疏的大小。

nzmax=4(>=max(i or j)),稀疏矩阵最多可以有nzmax个元素。

一些简写的情况:

S = sparse(i,j,s,m,n)——nzmax = length(S) ;

S = sparse(i,j,s)——使m = max(i) 和 n = max(j),在S中零元素被移除前计算最大值,[i j s]中其中一行可能为[m n 0];

S = sparse(m,n)——sparse([],[],[],m,n,0)的缩写,生成一个m*n的所有元素都是0的稀疏矩阵。

full函数

功能:把稀疏矩阵转为全矩阵

A=full(X)——把稀疏矩阵X转换为全矩阵存储形式A。

matlab sparse matrix和full matrix

其实这只是matlab中存储稀疏矩阵的两种方法。

MATLAB函数sparse简介

函数功能:

这个函数与稀疏矩阵有关。

先说MATLAB中两个概念:full storage organization(对应于full matrix)和sparse storage organization(对应于sparse matrix)。

而要说明这两个概念,需要介绍稀疏矩阵的概念。

一般意义上的稀疏矩阵,就是看起来很松散的,也就是说,在这个矩阵中,绝大多数元素是零。例如:

0, 0, 0, 0;

0, 0, 1, 0;

0, 0, 0, 0;

0, 1, 0, 2;

计算机存储稀疏矩阵可以有两种思路:

1.按照存储一个普通矩阵一样存储一个稀疏矩阵,比如上面这个稀疏矩阵中总共十六个元素(三个非零元素),把这些元素全部放入存储空间中。这种存储方式,在matlab就叫做full storage organization。

2.只存储非零元素,那么怎么存储呢?

(4,2)        1

(2,3)        1

(4,4)        2

看出来了吧, 只存储非零元素在稀疏矩阵中的位置和值。比如,上面所举的这个例子,值为2的项在第4行第4列,那么我们就只需要存储这一非零项在稀疏矩阵中的“坐标”(4,4)和这一非零项的值2。在MATLAB中,这种存储方式就叫做sparse storage organization。虽然,这样要多存储一组坐标,但如果稀疏矩阵中非零元素非常少,以这种存储方式存储稀疏矩阵反而节省了内存空间。

为什么matlab中会同时存在这两种存储方式呢?

第一种方式, 更加直观,进行矩阵运算时(比如稀疏矩阵的乘法),算法简单易实现。

而第二种方式,虽然有时可以节省存储数据时占用的存储空间,但进行运算时需要专门的算法实现(使用C语言编写过稀疏矩阵乘法的同学应该能体会到)。

sparse函数的功能就是把以第一种存储形式存储的稀疏矩阵转换成第二种形式存储(其实这个函数更重要的功能是构建稀疏矩阵,这里不再讨论)。对应的函数为full,即把以第二种方式存储的稀疏矩阵转换成第一种方式存储。

在MATLAB中,存储一个稀疏矩阵有两种方法。

语法格式:

S = sparse(A)

S = sparse(i,j,s,m,n,nzmax)

S = sparse(i,j,s,m,n)

S = sparse(i,j,s)

S = sparse(m,n)

各种语法格式详见MATLAB帮助文档。

相关函数:full、issparse

程序示例

>> A = [0, 0, 0, 0;

0, 0, 1, 0;

0, 0, 0, 0;

0, 1, 0, 2];

>> sparse(A)

ans =

(4,2)        1

(2,3)        1

(4,4)        2

当然sparse函数还可以通过一定规则构造稀疏矩阵,这里就不多说了。

本文转自:http://blog.csdn.net/meng4411yu/article/details/8840612

matlab sparse用法,sparse 稀疏函数的用法2相关推荐

  1. matlab repmate,MATLAB中“repmat”与“cat”函数的用法

    MATLAB中"repmat"与"cat"函数的用法 1. repmat函数 >> z=repmat(5,2,3) z = 5 5 5 5 5 5 ...

  2. matlab 调整灰度,matlab灰度图像调整及imadjust函数的用法详解

    matlab--imadjust函数作用: 对进行图像的灰度变换,即调节灰度图像的亮度或彩色图像的颜色矩阵 在MATLAB中,通过函数imadjust()进行图像灰度的调整,该函数调用格式如下: J= ...

  3. MATLAB三维绘图基础meshgrid函数的用法解析

    MATLAB三维绘图基础meshgrid函数的用法解析   MATLAB中meshgrid函数是用来生成网格的,函数用法是:   [X,Y] = meshgrid(x,y);这种是最常用的一种用法.x ...

  4. Matlab求解非线性规划,fmincon函数的用法总结

    Matlab求解非线性规划,fmincon函数的用法总结 1.简介 在matlab中,fmincon函数可以求解带约束的非线性多变量函数(Constrained nonlinear multivari ...

  5. python里apply用法_Python apply函数的用法

    Python apply函数的用法 发布于 2014-08-07 21:02:24 | 674 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一种面向对象.解释型计 ...

  6. php中的point用法,php strnatcmp()函数的用法总结

    这篇文章主要是对php中strnatcmp()函数的用法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助 Definition and Usage 定义和用法The strnatcm ...

  7. pythonrange函数用法_python range()函数详细用法

    python range()函数详细用法 函数原型:range(start, end, scan): 参数含义:start:计数从start开始.默认是从0开始.例如range(5)等价于range( ...

  8. python decode函数的用法_Oracle DECODE函数的用法详解

    Oracle DECODE函数 使用方法: 1.比较大小 select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值 sign()函数根据某个值 ...

  9. php preg_replace 用法,PHP正则表达式函数preg_replace用法实例分析

    本文实例讲述了PHP正则表达式函数preg_replace用法.分享给大家供大家参考,具体如下: preg_replace 执行一个正则表达式的搜索和替换 语法:preg_replace (patte ...

最新文章

  1. 红曲面怎么做_新年就要“红”运当头 买款高颜值红色旗舰让年味更浓
  2. 【Tools】CSDN-markdown编辑器使用说明
  3. 抖音xgorgon0408分析
  4. 分享一款最近比较火爆的宝石迷情游戏游戏源码安卓版
  5. dp之二维背包poj1837(天平问题 推荐)
  6. nyoj744 蚂蚁的难题(-)
  7. [翻译]现代java开发指南 第一部分
  8. 去年出货的工业机器人,超过1/3都跑来了中国
  9. html 调用c#dll中的控件,C#实现反射调用动态加载的DLL文件中的方法和在窗体中加载DLL文件的用户控件...
  10. Android抓包方法(三) 之Win7笔记本Wifi热点+WireShark工具
  11. 流畅的python 18章
  12. 泛型与STL Note
  13. Mac OS X 内核Rootkit开发指南
  14. App性能优化:内存优化
  15. 关于以太网卡的组成部分:MAC/PHY/变压器
  16. c 与易语言程序间通信,易语言与三菱PLC通信-FX系列
  17. iNode客户端“未收到服务器回应,即将强行下线,请检查终端能否正常访问网络或者与管理员联系”问题与解决方式...
  18. C++ concurrentqueue资料
  19. Revit二次开发—获取内置参数对应的中文字符串,并导出Excel;举例(BuiltParameterGroup、ParameterType和BuiltInCategory)
  20. 我的2017年工作总结

热门文章

  1. arp miss攻击_如何查看是否被arp攻击
  2. linux 终端打印圣诞树,1021字节javascript写成的3D圣诞树
  3. 盘点五大类 DeFi 数据分析工具
  4. 1-继承、模板设计模式、抽象类、final
  5. 真正的程序员 - 会心一笑
  6. linux多线程服务器编程 豆瓣,陈硕的Blog
  7. 前端笔试题整理:活到老学到老②
  8. 3DES加密解密及c++实现
  9. mysql explain字段含义,Mysql explain中的关键字段(通俗易懂篇)
  10. Fast Perceptual Image Enhancement