主要内容

稀疏的

创建稀疏矩阵

描述

例子

S =稀疏(一个)将一个完整的矩阵转化为稀疏的形式通过挤压出任何零元素。如果一个矩阵包含许多零转换矩阵稀疏存储节省内存。

例子

S =稀疏(m, n)生成一个——- - - - - -n所有零稀疏矩阵。

例子

S =稀疏(我,我,v)生成一个稀疏矩阵年代从三胞胎,j,v这样(我(k), j (k)) = v (k)。的max(我)——- - - - - -马克斯(j)输出矩阵有空间分配长度(v)非零元素。

如果输入,j,v向量或矩阵,他们必须有相同数量的元素。另外,参数v和/或其中的一个参数j可以是标量。

例子

S =稀疏(我,我,v,m, n)指定的尺寸年代作为——- - - - - -n

例子

S =稀疏(我,我,v,m, n,新西兰)分配的空间新西兰非零元素。使用这个语法为非零值分配额外的空间建设后填写。

例子

全部折叠

创建一个10000 -,- 10000完整的存储单位矩阵。

一个=眼(10000);谁一个
类属性名称大小字节10000 x10000 10000双

这个矩阵使用800 mb的内存。

转换矩阵稀疏存储。

S =稀疏(一个);谁年代
类属性名称大小字节10000 x10000 240008双稀疏

在稀疏的形式,同样的矩阵使用大约0.25 mb的内存。在这种情况下,您可以完全避免完整存储使用speye函数,该函数创建稀疏矩阵直接身份。

S =稀疏(10000、5000)
S = 0稀疏:10000 x5000

创建一个1500 - 1500稀疏矩阵的三胞胎,j,v

我= (900 - 1000);j = (900 - 1000);v = (100);S =稀疏(i, j, v, 1500年,1500年)
S = (900900) 10 (1000、1000) 100

当你指定一个比大小max(我)——- - - - - -马克斯(j),稀疏的函数垫额外的行和列的输出为零。

大小(年代)
ans =1×21500 1500

创建一个稀疏矩阵10非零值,但是空间分配One hundred.非零值。

S =稀疏(1:10 1:10 5,20,20100);N = nnz (S)
N = 10
N_alloc = nzmax (S)
N_alloc = 100

spalloc函数是一个速记方法创建一个稀疏矩阵没有非零元素,但空间分配给一些非零的数量。

使用重复的下标积累值到一个稀疏矩阵,否则需要一个或多个循环。

创建一个列向量的数据和两个列向量的下标。

i = [6 6 6 5 10 10 9 9) ';j = [1 1 1 2 3 3 10 10] ';v = (100 202 173 305 410 550 323 121) ';

可视化下标和价值观并排。

(i, j, v)
ans =8×36 1 100 6 1 202 6 1 173 5 305 323 3 410 550 3 9 10 9 10 121

使用稀疏的函数来积累的值相同的下标。

S =稀疏(i, j, v)
S = (6,1) 475 (2) 305 (10, 3) 960 (9、10) 444

输入参数

全部折叠

输入矩阵,指定为一个完整的或稀疏矩阵。如果一个已经稀疏,那么稀疏(A)返回一个

数据类型:|逻辑
复数的支持:金宝app是的

标量的下标,指定为独立参数,向量或矩阵。对应的元素j指定S (i, j)下标双,确定值的位置v到输出。j必须具有相同的数据类型。如果任何一j是一个向量或矩阵,那么其他的输入可以是一个标量或可以与相同数量的向量或矩阵元素。在这种情况下,稀疏的使用我(:)j (:)下标。

如果j对几个元素有相同的值吗v,然后稀疏的集合中的值v重复的指标。聚合行为取决于值的数据类型v:

  • 对于逻辑值,稀疏的应用任何函数。

  • 对于双值,稀疏的应用总和函数。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑

值,指定为一个标量、向量或矩阵。如果v是一个向量或矩阵,然后其中一个输入j还必须与相同数量的向量或矩阵元素。

任何元素v零的忽略,对应的下标j。然而,如果您不指定输出的尺寸大小,n,然后稀疏的计算出最大值m = max(我)n = max (j)在忽略任何零元素v

数据类型:|逻辑
复数的支持:金宝app是的

每个维度的大小,指定为独立参数的整数值。如果您指定(行大小),您还必须指定n(列大小)。

如果你不指定n,然后稀疏的使用默认值m = max(我)n = max (j)。这些极大值计算零之前v是删除。

数据类型:

存储分配的非零元素,指定为一个非负整数。新西兰通常必须大于或等于马克斯([元素个数(我),元素个数(j),元素个数(v), 1])。然而,如果的大小,j,v允许你指定一个值0新西兰,然后稀疏的而不是设置值1

稀疏矩阵,年代,nnz函数返回矩阵中的非零元素的数量,和nzmax函数返回的存储量为非零矩阵元素分配。如果nnz (S)nzmax (S)可能返回不同的结果,那么更多的存储空间分配比实际上是必需的。出于这个原因,集新西兰只有在预期后填写。

如果你不指定新西兰,然后稀疏的使用默认值马克斯([元素个数(我),元素个数(j),元素个数(v), 1])

数据类型:

限制

  • 如果任何输入我,我m, n更大比2 ^还有对于32位平台,或2 ^ 48-1在64位平台上,然后不能构造稀疏矩阵。

提示

  • MATLAB®稀疏矩阵存储在压缩稀疏列格式。有关更多信息,请参见约翰·r·吉尔伯特克里夫硅藻土,和罗伯特·施赖伯稀疏矩阵的MATLAB:设计和实现

  • accumarray函数也有类似行为的积累稀疏的

    • accumarray组数据放在箱子里使用n维下标,但稀疏的使用二维下标数据分组到垃圾箱。

    • accumarray添加元素有相同的默认下标到输出,但是可以选择任何函数应用到垃圾箱。稀疏的应用总和函数的元素有相同的下标到输出(双值)或应用任何函数(逻辑值)。

扩展功能

之前介绍过的R2006a