mapSymType

Aplica uma função a toda subexpressão de um dado tipo.

Categoria: Symbolic Computations in MATLAB > Symbolic Variables, Expressions, Functions, and Preferences

Sintaxe

R = mapSymType(S, type, f)

Substitui cada subexpressão de S do tipo type por f aplicada a ela.

Descrição

mapSymType percorre a árvore da expressão, encontra cada parte do tipo pedido e a substitui pelo valor de f nessa parte. É uma reescrita estrutural: ao contrário de subs, pode atuar sobre todas as ocorrências de uma classe inteira de subexpressões, como todos os inteiros ou todas as chamadas de sin.

Por exemplo, aplicar n -> n + 1 aos inteiros de x^2 + 3*x produz x^3 + 4*x, já que o expoente e o coeficiente são inteiros.

Argumentos de entrada

S
Expressão simbólica.
type
String com o nome do tipo, como 'variable', 'integer' ou o nome de uma função como 'sin'.
f
Handle de função que recebe uma subexpressão e retorna a substituição.

Argumentos de saída

R
A expressão reescrita.

Exemplo

Reescrevendo variáveis e chamadas de função

syms x
mapSymType(x + 1, 'variable', @(v) v^2)
mapSymType(sin(x) + cos(x), 'sin', @(s) cos(children(s)))
mapSymType(x^2 + 3*x, 'integer', @(n) n + 1)
Saída
ans = x^2 + 1
ans = 2*cos(x)
ans = x^3 + 4*x

Veja também

findSymType hasSymType isSymType subs children