MATLAB 帮助中心
为稀疏矩阵分配空间
S = spalloc(m,n,nz)
S = spalloc(m,n,nz,typename)
S = spalloc(m,n,nz) 创建一个大小为 m×n 的全零稀疏矩阵 S,该矩阵具有可存储 nz 个非零元素的空间,其中 nz >= 1。
S
m
n
nz
nz >= 1
示例
S = spalloc(m,n,nz,typename) 返回指定数据类型的稀疏矩阵。 (自 R2025a 起)
typename
全部折叠
使用 spalloc 初始化一个 10×10 全零稀疏矩阵,该矩阵最多可以容纳 20 个非零元素。
spalloc
S = spalloc(10,10,20);
定义矩阵中的几个元素。
S(1:3,1:3) = magic(3)
S = 10×10 sparse double matrix (9 nonzeros) (1,1) 8 (2,1) 3 (3,1) 4 (1,2) 1 (2,2) 5 (3,2) 9 (1,3) 6 (2,3) 7 (3,3) 2
显示矩阵中非零元素的数量。
n1 = nnz(S)
n1 = 9
显示为非零矩阵元素分配的存储量。
n2 = nzmax(S)
n2 = 20
使用 spalloc 初始化一个 20×20 全零稀疏矩阵,其空间可容纳 100 个非零元素。
n = 20; S = spalloc(n,n,5*n);
然后使用 for 循环填充 S 的列,一次填充一列,平均每列最多五个非零元素。
for
for j = 1:n S(:,j) = [zeros(n-5,1); round(rand(5,1))]; end
绘制矩阵 S 的稀疏模式。圆点表示非零元素。
spy(S)
n1 = 54
n2 = 100
矩阵行数,指定为非负整数。
数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
single
double
int8
int16
int32
int64
uint8
uint16
uint32
uint64
logical
矩阵列数,指定为非负整数。
非零元素的存储空间分配,指定为非负整数。如果为 nz 指定值 0,则 spalloc 会将 nz 更改为 1。
"double"
"single"
"logical"
自 R2025a 起
输出数据类型,指定为 "double"、"single" 或 "logical"。
输出矩阵,以全零稀疏矩阵形式返回。
矩阵维度 m 和 n 在 32 位平台上都必须小于 2^31-1,在 64 位平台上都必须小于 2^48-1。
2^31-1
2^48-1
当您多次向使用 spalloc 创建的矩阵赋值时,预分配的内存可防止重分配内存。然而,为稀疏矩阵分配存储空间仍是成本相对较高的操作,通常尽可能采用以下方法之一来避免该操作:
一次性调用 sparse 函数
sparse
一次性调用 spdiags 函数
spdiags
一次性串联一组矩阵,矩阵可以是稀疏矩阵、稠密矩阵或同时包含这两种矩阵
全部展开
backgroundPool
ThreadPool
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
用法说明和限制:
请参阅 distributed.spalloc (Parallel Computing Toolbox)。
distributed.spalloc
有关详细信息,请参阅使用分布式数组运行 MATLAB 函数 (Parallel Computing Toolbox)。
您可以通过将 typename 参量指定为 "double"、"single" 或 "logical" 来指定输出数据类型。
nzmax
nnz
spy
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
欧洲
亚太
联系您当地的办事处