spalloc
为稀疏矩阵分配空间
说明
示例
创建具有指定大小和预分配的稀疏矩阵
使用 spalloc
初始化一个 10×10 全零稀疏矩阵,该矩阵最多可以容纳 20 个非零元素。
S = spalloc(10,10,20);
定义矩阵中的几个元素。
S(1:3,1:3) = magic(3)
S = (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 j = 1:n S(:,j) = [zeros(n-5,1); round(rand(5,1))]; end
绘制矩阵 S
的稀疏模式。圆点表示非零元素。
spy(S)
显示矩阵中非零元素的数量。
n1 = nnz(S)
n1 = 54
显示为非零矩阵元素分配的存储量。
n2 = nzmax(S)
n2 = 100
输入参数
m
— 矩阵行数
非负整数
矩阵行数,指定为非负整数。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
n
— 矩阵列数
非负整数
矩阵列数,指定为非负整数。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
nz
— 非零元素的存储空间分配
非负整数
非零元素的存储空间分配,指定为非负整数。如果为 nz
指定值 0,则 spalloc
会将 nz
更改为 1。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
局限性
矩阵维度
m
和n
在 32 位平台上都必须小于2^31-1
,在 64 位平台上都必须小于2^48-1
。
提示
扩展功能
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
分布式数组
使用 Parallel Computing Toolbox™ 在集群的组合内存中对大型数组进行分区。
用法说明和限制:
请参阅
distributed.spalloc
(Parallel Computing Toolbox)。
有关详细信息,请参阅Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox)。
版本历史记录
在 R2006a 之前推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)