prog
:: find
Найдите операнды объектов
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
prog::find(obj
, piece
, <Depth = d
>, <Type>)
prog::find(obj, piece)
возвращает положение объекта piece
в объекте obj
MuPAD® как список. Список представляет “путь” к данному объекту. С этим списком и функциями op
и subsop
, можно непосредственно получить доступ к объекту.
Путь к объекту piece
является списком, который содержит целые числа i1, ..., in
.
Значение состоит в том, что piece
является in
-th операнд (in - 1)
- операнда Св. и т.д. i1
- операнд Св. данного объекта obj
.
Утвержденный по-другому, op(ex, [i1, ..., in]) = opr
.
Если искавший объект содержит несколько раз, последовательность списков возвращена.
Пустой список [ ]
как путь определяет сам объект obj
.
Идентификатор a
является первым операндом выражения:
prog::find(a + b + c, a)
Номер 1
несколько раз происходит:
prog::find(f(1, 1, 1), 1)
Идентификатор a
является первым операндом второго операнда первого операнда выражения:
prog::find(b*(a - 1) + b*(x - 1), a)
Результат prog::find
может использоваться, чтобы получить доступ к элементу с op
или заменить его на subsop
:
op(b*(a - 1) + b*(x - 1), [1, 2, 1]); subsop(b*(a - 1) + b*(x - 1), [1, 2, 1] = A)
Сколько вызовов return
sin
содержит?
nops([prog::find(sin, return)])
sin
содержит много вызовов return
! Однако sin
является функциональной средой, и слоты исследованы, также. Чтобы исследовать только основную процедуру, возьмите первый операнд функциональной среды:
nops(prog::find(op(sin, 1), return))
prog::find
может также найти все объекты данного типа:
nops(prog::find(sin, DOM_PROC, Type))
Чтобы найти только процедуры верхнего уровня, опцию, Depth
может использоваться:
nops(prog::find(sin, DOM_PROC, Type, Depth = 1))
prog::find
работает с таблицами, и другой содержит, также:
T := table(1 = sin(x), 2 = cos(x), 3 = tan(x), 4 = tan(y), 5 = sin(y), 6 = cos(y)): prog::find(T, sin)
prog::find(T, "cos", Type)
В этом примере мы показываем, как управлять существующей функцией заменой. Мы используем subsop
для замены и prog::find
, чтобы получить путь для замены. Здесь мы заменяем ^
- функционируют функциональным mypower
, который дополнительно считает количество его вызовов:
f := x -> `+`(x^j $ j = 1 .. random(10)()): mypower := (b, e) -> (count := count + 1; b^e): map([prog::find(f, `^`)], X -> (f := subsop(f, X = mypower))):
После вызова функционального f
десять раз в цикле, мы видим получившееся количество вызовов ^
в count
:
count := 0: for i from 1 to 10 do f(i); end: count
|
Любой объект MuPAD |
|
Любой объект MuPAD |
|
Опция, заданная как Эта опция позволяет исследовать операнды данного объекта, которые являются областями, процедурами и функциональными средами, только с глубиной рекурсии
|
|
Когда опция |
Список чисел, которые определяют положение данного объекта в данном выражении или последовательности списков, если выражение несколько раз содержит объект
prog::find
может использоваться, чтобы исследовать и управлять комплексными объектами MuPAD с subsop
.