文档

稀疏的

创建稀疏矩阵

描述

例子

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

例子

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

例子

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

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

例子

S =稀疏(我,我vm, n指定的大小年代作为——- - - - - -n

例子

S =稀疏(我,我vm, n新西兰分配的空间新西兰非零元素。使用此语法为构造后要填充的非零值分配额外的空间。

例子

全部折叠

创建一个10000乘10000的完整存储标识矩阵。

一个=眼(10000);谁一个
Name Size Bytes Class Attributes A 10000x10000 800000000 double

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

将矩阵转换为稀疏存储。

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

在稀疏形式下,相同的矩阵使用大约0.25兆的内存。在这种情况下,您可以使用speye函数,它直接创建稀疏单位矩阵。

S =稀疏(10000、5000)
S =全零稀疏:10000x5000

创建一个1500 × 1500的稀疏矩阵j,v

I = [900 1000];J = [900 1000];V = [10 100];S =稀疏(i, j, v, 1500年,1500年)
S = (900,900) 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 2 305 10 3 410 10 3 550 9 10 323 9 10 121

使用稀疏的函数累加具有相同下标的值。

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

输入参数

全部折叠

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

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

下标对,指定为标量、向量或矩阵的单独参数。对应的元素j指定S (i, j)下标对,它决定值的位置v到输出。如果任何一j是一个向量或矩阵,则另一个输入可以是一个标量,也可以是具有相同数量元素的向量或矩阵。在这种情况下,稀疏的使用我(:)j (:)下标。如果j有相同的值为几个元素v,然后把这些元素加在一起。

请注意

如果在j大于2 ^还有对于32位平台,或者2 ^ 48-1在64位平台上,则不能构造稀疏矩阵。

数据类型:|逻辑

值,指定为标量、向量或矩阵。如果v一个向量或者矩阵是输入吗j也必须是具有相同数目元素的向量或矩阵。

任何元素v中对应的下标将被忽略j.但是,如果不指定输出的维度大小,n,然后稀疏的计算出最大值m = max(我)n = max (j)在忽略任何零元素之前v

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

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

如果没有指定n,然后稀疏的使用默认值m = max(我)n = max (j).这些最大值是在任何零之前计算的v是删除。

数据类型:

非零元素的存储分配,指定为非负整数。新西兰通常必须大于或等于Max ([nummel (i), nummel (j), nummel (v), 1]).然而,如果大小j,v允许指定的值0新西兰,然后稀疏的而是将值设置为1

对于稀疏矩阵,年代,nnz函数返回矩阵中非零元素的个数,而nzmax函数返回分配给非零矩阵元素的存储空间。如果nnz (S)nzmax (S)返回不同的结果,则可能分配比实际需要更多的存储空间。因此,set新西兰只是期待着以后的补缺。

如果没有指定新西兰,然后稀疏的使用默认值Max ([nummel (i), nummel (j), nummel (v), 1])

数据类型:

提示

  • MATLAB®以压缩的稀疏列格式存储稀疏矩阵。欲了解更多信息,请参阅John R. Gilbert, Cleve Moler和Robert Schreiber的稀疏矩阵的MATLAB:设计与实现

  • accumarray函数具有与的相似的积累行为稀疏的

    • accumarray使用将数据分组到binsn维下标,但稀疏的使用二维下标将数据分组到容器中。

    • accumarray默认情况下,将具有相同下标的元素添加到输出中,但可以选择对容器应用任何函数。稀疏的只在输出中添加下标相同的元素。

扩展功能

之前介绍过的R2006a