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