主要内容

本页面提供的是上一版软件的文档。当前版本中已删除对应的英文页面。

sparse

R2025b

创建共存分布式稀疏矩阵

    描述

    S = sparse(A) 通过删除任何零元素将完全共存分布式矩阵转换为稀疏形式。您可以通过将包含许多零的矩阵转换为稀疏存储来节省内存。

    示例

    S = sparse(m,n) 创建一个由 m 和 n 组成的全零共存分布式稀疏矩阵。

    S = sparse(m,n,typename) 还指定了共存分布式稀疏矩阵的数据类型(类)。typename 输入可以是 "single" 或 "double"。 (自 R2025a 起)

    S = sparse(i,j,v) 由三元组 i、j 和 v 创建一个共存分布式稀疏矩阵 S。S 中的行数由 i 的最大值设置,S 中的列数由 j 的最大值设置。矩阵为 length(v) 非零元素分配了空间。

    每个输入 i、j 和 v 必须具有 1 或 N 元素,以便每个非标量输入具有相同数量的元素。

    S = sparse(i,j,v,m,n) 将 S 的大小指定为 m×n。

    S = sparse(i,j,v,m,n,nz) 为 nz 非零元素分配空间。使用此语法为构造后要填充的非零值分配额外的空间。

    示例

    全部折叠

    创建一个 1000×1000 的共存分布式密集三角矩阵,按其第二个维度(列)分布。将共存分布式矩阵转换为共存分布式稀疏矩阵。

    spmd(4)
        C = triu(rand(1000,1000,"codistributed"));
        S = sparse(C);
    end

    有 4 个工作单元,每个工作单元包含一个 1000×250 的本地 C 代码块。

    输入参数

    全部折叠

    输入矩阵,指定为满矩阵或 codistributed 矩阵。如果 A 已经是稀疏的,那么 sparse(A) 将返回 A。

    下标对,指定为标量、向量或矩阵的单独参量。如果 i 和 j 不是标量,则 i(k)、j(k) 和 v(k) 将 S(i(k),j(k)) 的值指定为:

    S(i(k),j(k)) = v(k)

    如果 i 或 j 是标量,该函数将使用该值来指定 S 中的多个元素。例如,如果仅 i 是标量,则 j(k) 和 v(k) 将 S(i,j(k)) 的值指定为:

    S(i,j(k)) = v(k)

    如果 i 和 j 对于 v 中的几个元素具有相同的值,则 sparse 会聚合 v 中具有重复索引的值。聚合行为取决于 v 中值的数据类型:

    • 对于逻辑值,sparse 应用 any 函数。

    • 对于双精度值,sparse 应用 sum 函数。

    值,指定为标量、向量或矩阵。v 的底层类型必须是 double 或 logical。

    如果 v 不是标量,i(k)、j(k) 和 v(k) 将 S(i(k),j(k)) 的值指定为:

    S(i(k),j(k)) = v(k)

    如果 v 是标量,该函数将使用该值来指定 S 中的多个元素。例如,如果仅 v 是标量,则 i(k) 和 j(k) 将 S(i(k),j(k)) 的值指定为:

    S(i(k),j(k)) = v

    v 中任何为零的元素都会被忽略,i 和 j 中相应的下标也会被忽略。

    sparse 在忽略 v 中的任何零元素之前设置输出矩阵的行数和列数。因此,如果将 v 中的任何值设置为 0,则输出矩阵的大小将不会改变。

    每个维度的大小,指定为单独的整数参量。m 和 n 的底层类型必须是 double。m 是行大小,n 是列大小。如果指定 m,则必须指定 n。

    如果没有指定 m 和 n,那么 sparse 将使用默认值 m = max(i) 和 n = max(j)。这些最大值是在删除 v 中的任何零之前计算的。

    非零元素的存储分配,指定为非负整数。m 和 n 的底层类型必须是 double。

    默认值为 max([numel(i), numel(j), numel(v), 1])。nz 必须大于或等于该值。

    对于稀疏矩阵 S,nnz 函数返回矩阵中非零元素的数量,nzmax 函数返回为非零矩阵元素分配的存储量。如果 nnz(S) 和 nzmax(S) 返回不同的结果,那么分配的存储空间可能比实际需要的多。因此,仅当您想填充值时才设置 nz。

    自 R2025a 起

    要创建的数据类型(类),指定为以下选项之一:

    • "double"

    • "single"

    您只能将 typename 参量与 m,n 参量一起指定。

    版本历史记录

    在 R2006b 中推出

    全部展开