Apply function to nonzero sparse matrix elements
f = spfun(fun,S)
The spfun function selectively applies
a function to only the nonzero elements of a
sparse matrix S, preserving the sparsity pattern
of the original matrix (except for underflow or if fun returns
zero for some nonzero elements of S).
f = spfun(fun,S) evaluates fun(S) on
the elements of S that are nonzero. fun is
a function handle.
Parameterizing Functions explains how to provide additional
parameters to the function fun, if necessary.
Given the 4-by-4 sparse diagonal matrix
S = spdiags([1:4]',0,4,4) S = (1,1) 1 (2,2) 2 (3,3) 3 (4,4) 4
Because fun returns nonzero values for all
nonzero element of S, f = spfun(@exp,S) has
the same sparsity pattern as S.
f = (1,1) 2.7183 (2,2) 7.3891 (3,3) 20.0855 (4,4) 54.5982
whereas exp(S) has 1s
where S has 0s.
full(exp(S))
ans =
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.5982Functions that operate element-by-element, like those in the elfun directory,
are the most appropriate functions to use with spfun.