MATLAB系列07:稀疏矩阵、单元阵列和结构

7. 稀疏矩阵、单元阵列和结构

稀疏矩阵是矩阵的一种特殊形式,在这个矩阵中只对非零元素分配内存。单元阵列也是一种矩阵,它的每一个元素可以是 MATLAB 任何一种数据类型。它们广泛应用于 MATLAB 用户图象界面(GUI)函数。最后,结构提供了一种在单个变量中存储了不同类型的数据的方法,在这个变量中的每一个数据项目都有一个独立的名字。

7.1 稀疏矩阵

对大规模稀疏矩阵进行存储和运算(其中大部分为 0)是对内存空间和 cpu资源的极大浪费。不巧的是,在现实中的许多问题都需要稀疏矩阵,我们需要一些有效的方示来解决这个问题。

7.1.1 sparse数据类型

在 MATLAB 中有一个专门的数据类型,用来对稀疏进行运算。 sparse 数据类型不同于doulbe 数据,它在内存中只存储非零元素。实际上, sparse 数据类型只存储每一个非零元素的三个值:元素值,元素的行号和列号。尽管非零元素这三个值必须存储在这内存,但相对于存储稀疏矩阵的所有元素来说要简单高效得多。示例:

>> a=eye(10)

a =

     1     0     0     0     0     0     0     0     0     0
     0     1     0     0     0     0     0     0     0     0
     0     0     1     0     0     0     0     0     0     0
     0     0     0     1     0     0     0     0     0     0
     0     0     0     0     1     0     0     0     0     0
     0     0     0     0     0     1     0     0     0     0
     0     0     0     0     0     0     1     0     0     0
     0     0     0     0     0     0     0     1     0     0
     0     0     0     0     0     0     0     0     1     0
     0     0     0     0     0     0     0     0     0     1

>> as=sparse(a)

as =

   (1,1)        1
   (2,2)        1
   (3,3)        1
   (4,4)        1
   (5,5)        1
   (6,6)        1
   (7,7)        1
   (8,8)        1
   (9,9)        1
  (10,10)       1
7.1.1.1 产生稀疏矩阵

MATLAB 可以通过 sparse 函数把一个全矩阵转化为一个稀疏矩阵,也可以用 MATLAB 函数 speye, sprand 和 sprandn 直接产生稀疏矩阵,它们对应的全矩阵为 eye, rand, 和 randn。例如,表达式 a = speye(4)将产生一个 4×4 的稀疏矩阵。

>> a=speye(4)

a =

   (1,1)        1
   (2,2)        1
   (3,3)        1
   (4,4)        1

表达式 b = full(a)把稀疏矩阵转化相应的全矩阵。

>> b=full(a)

b =

     1     0     0     0
     0     1     0     0
     0     0     1     0
     0     0     0     1
7.1.1.2 稀疏矩阵的运算

如果一个矩阵是稀疏的,那么单个元素可以通过简单的赋值语句添加或删除,例如下面的语句产生一个 4×4 的稀疏矩阵,然后把其他的非零元素加入其中。

>> a(2,1)=-2

a =

   (1,1)        1
   (2,1)       -2
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值