spfun
将函数应用于非零稀疏矩阵元素
说明
示例
将指数函数应用于稀疏矩阵
创建一个 4×4 稀疏对角矩阵。
S = diag(sparse(1:4))
S = 4x4 sparse double matrix (4 nonzeros)
(1,1) 1
(2,2) 2
(3,3) 3
(4,4) 4
将指数函数应用于 S
的非零元素。生成的矩阵具有与 S
相同的稀疏模式。
F = spfun(@exp,S)
F = 4x4 sparse double matrix (4 nonzeros)
(1,1) 2.7183
(2,2) 7.3891
(3,3) 20.0855
(4,4) 54.5982
由于 spfun
仅应用于 S
的非零元素,因此只要 S(i)
为零,F(i)
的值就为零。这不同于将函数应用于 S
的所有元素。例如,将结果与将指数函数应用于 S
的所有元素进行比较。exp(S)
函数对 S
的 0
元素返回 1
。
full(exp(S))
ans = 4×4
2.7183 1.0000 1.0000 1.0000
1.0000 7.3891 1.0000 1.0000
1.0000 1.0000 20.0855 1.0000
1.0000 1.0000 1.0000 54.5982
应用二次函数并绘制稀疏模式
创建一个密度为 0.02
的随机 50
×50
稀疏矩阵,其中矩阵具有 50
个非零元素。绘制矩阵 S
的稀疏模式。
rng default;
S = sprand(50,50,0.02);
spy(S)
基于 S
的非零元素计算二次函数 。使用 spfun
计算的函数与矩阵 S
具有相同的稀疏模式。
fun = @(x) x.^2 + x + 1; F = spfun(fun,S); spy(F)
输入参数
提示
如果
func
对零值输入返回零值,则使用func(S)
返回的结果与对稀疏矩阵S
调用spfun
的结果相同。
扩展功能
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
GPU 数组
通过使用 Parallel Computing Toolbox™ 在图形处理单元 (GPU) 上运行来加快代码执行。
spfun
函数完全支持 GPU 数组。要在 GPU 上运行该函数,请将输入数据指定为 gpuArray
(Parallel Computing Toolbox)。有关详细信息,请参阅在 GPU 上运行 MATLAB 函数 (Parallel Computing Toolbox)。
分布式数组
使用 Parallel Computing Toolbox™ 在集群的组合内存中对大型数组进行分区。
用法说明和限制:
在每个工作进程中,
fun
仅接收工作进程本地的S
的非零元素作为输入。因此,按元素运算的函数最适合与spfun
结合使用。
有关详细信息,请参阅使用分布式数组运行 MATLAB 函数 (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)