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.