MATLAB 帮助中心
本页翻译不是最新的。点击此处可查看最新英文版本。
将函数应用于非零稀疏矩阵元素
F = spfun(func,S)
F = spfun(func,S) 将函数 func 应用于稀疏矩阵 S 的非零元素。输入参量 func 是一个函数的函数句柄,此函数接受一个输入参量。
F
func
S
此操作保留原始矩阵 S 的稀疏性,除非函数 func 对 S 的某些非零元素返回零。
示例
全部折叠
创建一个 4×4 稀疏对角矩阵。
S = diag(sparse(1:4))
S = 4×4 sparse double matrix (4 nonzeros) (1,1) 1 (2,2) 2 (3,3) 3 (4,4) 4
将指数函数应用于 S 的非零元素。生成的矩阵具有与 S 相同的稀疏模式。
F = spfun(@exp,S)
F = 4×4 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。
spfun
S(i)
F(i)
exp(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 的稀疏模式。
0.02
50
rng default; S = sprand(50,50,0.02); spy(S)
基于 S 的非零元素计算二次函数 x2+x+1。使用 spfun 计算的函数与矩阵 S 具有相同的稀疏模式。
fun = @(x) x.^2 + x + 1; F = spfun(fun,S); spy(F)
输入矩阵。此矩阵通常(但不一定)是稀疏矩阵。
如果 S 是满矩阵,则 F = spfun(func,S) 将函数 func 应用于 S 的非零元素,并将 F 以稀疏矩阵形式返回。
数据类型: single | double | logical 复数支持: 是
single
double
logical
要对输入数组的元素应用的函数,指定为函数句柄。该函数应对 S 执行按元素运算。有关函数句柄的详细信息,请参阅创建函数句柄。
示例: @(n) n+1
@(n) n+1
如果 func 对零值输入返回零值,则使用 func(S) 返回的结果与对稀疏矩阵 S 调用 spfun 的结果相同。
func(S)
全部展开
backgroundPool
ThreadPool
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
spfun 函数完全支持 GPU 数组。要在 GPU 上运行该函数,请将输入数据指定为 gpuArray (Parallel Computing Toolbox)。有关详细信息,请参阅在 GPU 上运行 MATLAB 函数 (Parallel Computing Toolbox)。
gpuArray
用法说明和限制:
在每个工作进程中,fun 仅接收工作进程本地的 S 的非零元素作为输入。因此,按元素运算的函数最适合与 spfun 结合使用。
fun
有关详细信息,请参阅使用分布式数组运行 MATLAB 函数 (Parallel Computing Toolbox)。
您可以将输入矩阵 S 指定为单精度。如果 S 为 single,则输出参量也为 single。
sparse | spones
sparse
spones
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 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
欧洲
亚太
联系您当地的办事处