sprand
稀疏均匀分布随机矩阵
说明
示例
创建具有相同稀疏模式的稀疏矩阵
创建巴克敏斯特·富勒多面穹顶的连接图形的 60
×60
稀疏邻接矩阵。绘制矩阵 S
的稀疏模式。
S = bucky; spy(S)
创建另一个稀疏矩阵 R
,该矩阵具有与矩阵 S
相同的稀疏模式,但具有均匀分布的随机项。绘制 R
的稀疏模式。
R = sprand(S); spy(R)
指定密度
创建一个密度为 0.1
的随机 500
×1000
稀疏矩阵。该矩阵有大约 0.1*500*1000 = 50000
个均匀分布的非零项。
R = sprand(500,1000,0.1);
显示矩阵 R
中非零元素的确切数量。
n = nnz(R)
n = 47663
指定条件数倒数
创建一个随机的 50
×100
稀疏矩阵,具有大约 0.2*50*100 = 1000
个均匀分布的非零项。将矩阵的条件数倒数指定为 0.25
。
R = sprand(50,100,0.2,0.25);
显示矩阵 R
的条件数等于 1/0.25 = 4
。
cond(full(R))
ans = 4.0000
输入参数
S
— 输入矩阵
满矩阵 | 稀疏矩阵
输入矩阵,指定为满矩阵或稀疏矩阵。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
复数支持: 是
m
— 矩阵行数
非负整数
矩阵行数,指定为非负整数。
n
— 矩阵列数
非负整数
矩阵列数,指定为非负整数。
density
— 非零元素的密度
标量
非零元素的密度,指定为标量。density
必须在区间 [0,1] 内。
数据类型: double
rc
— 条件数倒数
标量 | 向量
条件数倒数,指定为标量或向量。rc
必须在区间 [0,1] 内。
如果 rc
是一个长度为 lr
的向量(其中 lr <= min(m,n)
),则 R = sprand(m,n,density,rc)
将 rc
作为其第一个 lr
奇异值,并且所有其他项均为零。在本例中,R
是由应用于包含给定奇异值的对角矩阵的随机平面旋转生成的。它具有大量拓扑和代数结构。
数据类型: double
局限性
sprand
用于生成密度较小的大型矩阵,如果m*n
很小或density
很大,则生成的非零值会比要求的少得多。
扩展功能
GPU 数组
通过使用 Parallel Computing Toolbox™ 在图形处理单元 (GPU) 上运行来加快代码执行。
分布式数组
使用 Parallel Computing Toolbox™ 在集群的组合内存中对大型数组进行分区。
用法说明和限制:
请参阅
distributed.sprand
(Parallel Computing Toolbox)。
版本历史记录
在 R2006a 之前推出R2022a: 改进了生成随机稀疏矩阵时的性能
sprand
和 sprandn
函数在生成随机稀疏矩阵时,如果输出中非零元素的数量大于行数,则性能会得到提高。
例如,生成一个非零元素的密度为 10% 的 10000×10000 矩阵比上一版本快 2.5 倍。
function timingSprand n = 1e4; d = 0.1; rng default tic sprand(n,n,d); toc end
大致的执行时间是:
R2021b:2.7 秒
R2022a:1.1 秒
代码是在运行 Windows® 10 的 Intel® Xeon® CPU W-2133 @ 3.60 GHz 测试系统上通过调用 timingSprand
函数进行计时的。
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)