一般有两个命令可以用来创建稀疏矩阵:

1. sparse(较常用)

2. spdiags(主要用于非零元素都是对角线元素的情况)

sparse。使用格式如下

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

其实matlab函数sparse的文档中说的比较明白:

S = sparse(i,j,s,m,n,nzmax) uses vectors i, j, and s to generate an m-by-n sparse matrix such that S(i(k),j(k)) = s(k), with space allocated for nzmax nonzeros. Vectors i, j, and s are all the same length.

主要意思:i, j, s都是向量,i,j分别为非零元素的行下标和列下标构成的列向量,i(k)和j(k)作为两个下标标记非零元素在矩阵中的位置,这个位置上的元素值为s(k).

比如要构造的系数矩阵A中A(3,5)=7,而7是A中第10个非零元素(第几个元素是按列来数的),则i(10)=3,j(10)=5,s(10)=7

构造举例:

i=[1 3 1 2 1 4];j=[1 1 2 2 3 4];s = [1 2 3 4 5 6];

>> sparse(i,j,s)

ans =

(1,1)        1

(3,1)        2

(1,2)        3

(2,2)        4

(1,3)        5

(4,4)        6

m,n表明A 是 m×n 阶矩阵(可省略);nzmax 用于指定A 中非零元素所用存储空间大小(可省略)。最简单的使用方式是只输入非零元的数据以及各非零元的行指标和列指标。例如,创建一个只有三个非零元的4×5阶矩阵可用下面命令

i=[1  2  4];j=[1  3  5];s = [6  7  8];

A = sparse(i,j,s)

MATLAB执行后,将显示出

A =

(1,1)        6

(2,3)        7

(4,5)        8

这是特殊的稀疏矩阵存储方式,它的特点是所占内存少,运算速度快。如果想得到矩阵的全元素存储方式,可用下面命令

B = full(A)

计算机运行后,将显示出

B =

6     0     0     0     0

0     0     7     0     0

0     0     0     0     0

0     0     0     0     8

当所要构造矩阵比较大,而非零元素的位置又比较有规律时,可以考虑用sparese函数,首先构造i,j,s  然后矩阵就可以自动生成了。

2. spdiags(适用于非零元素均在对角线上,且对角线元素比较有规律,容易构造),例如,创建一个三对角的10×10矩阵, 可用下面命令

e = ones (10,1); % e似乎必须写成n*1的形式

A = spdiags ([ e,4*e,e ],[-1,0,1],10,10);

% 头一个大括号分别对应是3个不同非零对角线元素,按从下往上排列;第二个大括号对应于每个对角线相对于中央对角线的位置

% 后面的两个数就是要构造的系数矩阵的行列数

B = full (A)

这里,A是稀疏矩阵存储的方式,B是全元素存储的方式

B =

4     1     0     0     0     0     0     0     0     0

1     4     1     0     0     0     0     0     0     0

0     1     4     1     0     0     0     0     0     0

0     0     1     4     1     0     0     0     0     0

0     0     0     1     4     1     0     0     0     0

0     0     0     0     1     4     1     0     0     0

0     0     0     0     0     1     4     1     0     0

0     0     0     0     0     0     1     4     1     0

0     0     0     0     0     0     0     1     4     1

0     0     0     0     0     0     0     0     1     4

再比如,我要构造图像处理中经常用到的梯度计算矩阵,要产生类似如下的

-1 -1 -1  1 1 1 0 0 0....

-1 -1 -1 1 1 1 0 0 0...

-1 -1 -1 1 1 1 0 0 0...

可以使用命令:

%假设图像大小为N=n*n,这里给一个粗略的构造,最后几位没有考虑,其实不会有太大影响

e = ones(N,1);

Dv = spdiags([(-1)*e,(-1)*e,(-1)*e,e,e,e],[0,1,2,3,4,5],N,N);

转自:http://blog.csdn.net/afgh2587849/article/details/6526042

matlab如何创建稀疏矩阵,matlab稀疏矩阵创建及实例相关推荐

  1. matlab 热图,基于表格数据创建热图

    以表的形式导入文件 加载示例文件 TemperatureData.csv,此文件包含 2015 年 1 月至 2016 年 7 月间的日均温度.将此文件读取到一个表中并显示前五行. tbl = rea ...

  2. Matlab:使用 App 设计工具创建并运行简单 App

    Matlab:使用 App 设计工具创建并运行简单 App 运行教程 用于创建 App 的教程步骤 步骤 1:创建坐标区组件 步骤 2:创建滑块组件 步骤 3:更新滑块标签 步骤 4:导航到代码视图 ...

  3. matlab一维数组截取,Matlab创建一维数组的具体操作讲解

    原创Matlab创建一维数组的具体操作讲解 编辑:小葫芦 来源:PC下载网时间:2019-12-25 11:54:41 最近不少网友表示自己刚刚入手Matlab软件,还不会创建一维数组,而下面这篇文章 ...

  4. 用matlab做app,2020-02-27 MATLAB App Designer——在用 App 设计工具创建的 App 内共享数据...

    1 访问和更新回调中的 UI 组件内的数据 app.Component.Property 2 获取并设置一个仪表的 Value 属性 x = app.PressureGauge.Value; % Ge ...

  5. Matlab学习一本通,matlab基础教程

    链接:https://pan.baidu.com/s/1uTCbiRfIxcrt6lmiy6_QlQ  提取码:f2dn  Matlab学习一本通,matlab基础教程 <MATLAB R201 ...

  6. matlab接口编程配置,MATLAB与外部程序接口编程

    基本信息 书名:MATLAB与外部程序接口编程 定价:42.00元 作者: 出版社:机械工业出版社 出版日期:2009-01-00 ISBN:9787111257066 字数: 页码: 版次: 装帧: ...

  7. matlab中strvcat函数,matlab 函数手册大全(3)

    pinv 伪逆 plot 平面线图 plot3 三维线图 plotmatrix 矩阵的散点图 plotyy 双纵坐标图 poissinv 泊松分布逆累计概率分布函数 poissrnd 泊松分布随机数发 ...

  8. 第一章 matlab 学习入门之matlab基础

    matlab系列文章目录 第一章 matlab 学习入门之matlab基础 在这一章会学习到: 数据类型(数值,字符串,结构,单元数组,函数句柄,映射容器) 运算符与运算(算术运算符,关系运算符,逻辑 ...

  9. 在matlab如何调用库函数,Matlab调用外部库函数方法和注意事项

    在MATLAB环境下访问外部函数的共享库文件,必须首先把该库文件加载到内存中.一旦加载成功,就 能直接在MATLAB中直接请求关于函数的任何信息.而当不再需要该库时,就应当及时把库文件从内存 中卸载以 ...

  10. matlab 蔡旭晖,MATLAB基础与应用教程 蔡旭晖等

    第1章  MATLAB基础知识  1 1.1  MATLAB的发展与基本功能  1 1.1.1  MATLAB的发展  1 1.1.2  MATLAB的基本功能  2 1.2  MATLAB的工作环境 ...

最新文章

  1. 在CentOS 6.9 x86_64上从源码安装xz命令的方法
  2. 〖Android〗代理与正常网络分开同步CyangenMod源码
  3. 系统部署文档_惊喜!Alibaba架构师终于发布“微服务架构与实践”文档
  4. 初学linux系统代码,linux初学者-系统日志(二)(示例代码)
  5. javasript 面向对象
  6. 在你们看来,信息网络的定级如何才能更好的发展?或者说有什么影响因素使得定级工作不好开展?
  7. 怎么查看服务器系统内存,怎么查看服务器系统内存
  8. 使用CocoaPods给微信集成SDK打印收发消息
  9. volatile的作用及原理
  10. 计算机相关专业试题,计算机基础类 模拟试题 计算机相关专业 模拟题 10套 附答案.doc...
  11. 一个好用的变换类TransformManager
  12. 机器学习系列(九)【最大熵模型】
  13. 【Task2(2天)】特征工程
  14. kafka项目启动_使用Kafka Connect 同步Kafka数据到日志服务
  15. 软件详细设计文档模板
  16. Shiro面试题答案
  17. 微信小程序绘制图表(折线图、柱状图)
  18. bit、Byte、KB、MB、GB互相转换的关系
  19. ROS基础(三)——订阅者Subscriber编程实现
  20. 面向开发者稳定、安心的APP内测托管平台

热门文章

  1. 超大功率远程应急广播系统(大功率扬声器的应用)
  2. USB超高速3.0/3.2 USB3.0信号定义
  3. 计算机计算线性卷积规则,实验四----线性卷积与圆周卷积的计算.doc
  4. 服务器2008下快速删除文件,修改注册表 让Win2008操作更易上手
  5. 因为错过,所以才懂得珍惜
  6. 2017.10.12 记者招待会
  7. Java核心---网络编程
  8. 创建全局函数mysql_MySQL系列(十):函数
  9. AVR单片机模数转换的ADC实验 ATmega16
  10. 中国31省市区42部门投入产出表(1997-2017年)