MATLAB Function Reference
spfun

Apply function to nonzero sparse matrix elements

Syntax

• ```f = spfun(fun`,`S)
```

Description

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 nonzero elements of `S`. You can specify `fun` as a function handle or as an inline object.

Remarks

Functions that operate element-by-element, like those in the `elfun` directory, are the most appropriate functions to use with `spfun`.

Examples

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 `1`s where `S` has `0`s.

• ```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.5982
```

function handle (`@`), `inline`