annotate subsSymfun.m @ 696:7c16b5af8d98 feature/quantumTriangles

Add Jonatans symbolic lifehax
author Ylva Rydin <ylva.rydin@telia.com>
date Thu, 05 Oct 2017 18:04:23 +0200
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
696
7c16b5af8d98 Add Jonatans symbolic lifehax
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
1 % Subs for a symfun
7c16b5af8d98 Add Jonatans symbolic lifehax
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
2 % f remains a symbolic function. If any of it's arguments is eliminated
7c16b5af8d98 Add Jonatans symbolic lifehax
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
3 % it is removed from the argument list while preserving the order of the
7c16b5af8d98 Add Jonatans symbolic lifehax
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
4 % other arguments
7c16b5af8d98 Add Jonatans symbolic lifehax
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
5 function f = subsSymfun(f, old, new)
7c16b5af8d98 Add Jonatans symbolic lifehax
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
6 args = argnames(f);
7c16b5af8d98 Add Jonatans symbolic lifehax
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
7
7c16b5af8d98 Add Jonatans symbolic lifehax
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
8 newExpr = subs(f, old, new);
7c16b5af8d98 Add Jonatans symbolic lifehax
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
9 vars = symvar(subs(args, old, new));
7c16b5af8d98 Add Jonatans symbolic lifehax
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
10
7c16b5af8d98 Add Jonatans symbolic lifehax
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
11 newArgs = args(ismember(args,vars));
7c16b5af8d98 Add Jonatans symbolic lifehax
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
12
7c16b5af8d98 Add Jonatans symbolic lifehax
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
13 f = symfun(newExpr, newArgs);
7c16b5af8d98 Add Jonatans symbolic lifehax
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
14 end