spfun

Примените функцию к ненулевым элементам разреженной матрицы

Синтаксис

Описание

пример

F = spfun(func,S) применяет функциональный func к ненулевым элементам разреженной матрицы S. Входной параметр func указатель на функцию к функции, которая берет один входной параметр.

Эта операция сохраняет разреженность исходного матричного S если функциональный func возвращает нуль для некоторых ненулевых элементов S.

Примеры

свернуть все

Создайте разреженную диагональную матрицу 4 на 4.

S = diag(sparse(1:4))
S = 
   (1,1)        1
   (2,2)        2
   (3,3)        3
   (4,4)        4

Примените показательную функцию к ненулевым элементам S. Получившаяся матрица имеет тот же шаблон разреженности как S.

F = spfun(@exp,S)
F = 
   (1,1)       2.7183
   (2,2)       7.3891
   (3,3)      20.0855
   (4,4)      54.5982

Поскольку spfun только применяется к ненулевым элементам S, значение F(i) нуль каждый раз, когда S(i) нуль. Это отличается от применения функции ко всем элементам S. Например, сравните результат с применением показательной функции ко всем элементам S. exp(S) функция возвращает 1 для элементов S это - 0s.

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

Создайте случайный 50- 50 разреженная матрица с плотностью 0.02, где матрица имеет 50 ненулевые элементы. Постройте шаблон разреженности матричного S.

rng default;
S = sprand(50,50,0.02);
spy(S)

Figure contains an axes object. The axes object contains an object of type line.

Выполните квадратичную функцию x2+x+1 к ненулевым элементам S. Выполненная функция с помощью spfun имеет тот же шаблон разреженности как матричный S.

fun = @(x) x.^2 + x + 1;
F = spfun(fun,S);
spy(F)

Figure contains an axes object. The axes object contains an object of type line.

Входные параметры

свернуть все

Введите матрицу. Эта матрица обычно (но не обязательно) разреженна.

Если S полная матрица, затем F = spfun(func,S) применяет функциональный func к ненулевым элементам S и возвращает F как разреженная матрица.

Типы данных: double | logical
Поддержка комплексного числа: Да

Функция, чтобы примениться к элементам входного массива в виде указателя на функцию. Функция должна работать с S поэлементный. Для получения дополнительной информации об указателях на функцию, см. Создание указателя на функцию.

Пример: @(n) n+1

Советы

  • Если func возвращает нуль для входных параметров, которые являются нулем, можно использовать func(S) возвращать те же результаты как вызов spfun на разреженной матрице S.

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Представлено до R2006a