select
Выберите операнды
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
select(object
, f
, <p1, p2, …
>)
select(object, f)
возвращается, копия объекта со всеми операндами удалила, которые не удовлетворяют критерий, заданный процедурой f
.
select
является быстрой и удобной функцией для того, чтобы выбрать элементы списков, наборов, таблицы и т.д., которые удовлетворяют критерий, установленный процедурой f
.
Функциональный f
должен возвратить значение, которое может быть оценено к одному из булевых значений TRUE
, FALSE
или UNKNOWN
. Это может или возвратить одно из этих значений непосредственно, или это может возвратить уравнение или неравенство, которое может быть упрощено до одного из этих значений функциональным bool
.
Внутренне, функциональный f
применяется ко всем операндам x
входного объекта через вызов f(x, p1, p2, ...)
. Если результатом не является TRUE
, этот операнд удален. Исходный объект не изменяется в этом процессе.
Выходной объект имеет тот же тип как входной объект, т.е. список приводит к списку, набор приводит к набору и т.д.
Входной объект, который является последовательностью выражения, не сглажен. Cf. Пример 2.
Также “атомарные” объекты, такие как числа или идентификаторы могут быть переданы select
в качестве первого аргумента. Такие объекты обработаны как последовательности с одним операндом.
select
обрабатывает списки и наборы. В первом примере мы выбираем все истинные операторы из списка логических операторов. Результатом является снова список:
select([1 = 1, 1 = 2, 2 = 1, 2 = 2], bool)
В следующем примере мы извлекаем подмножество всех элементов, которые распознаны нулем iszero
:
select({0, 1, x, 0.0, 4*x}, iszero)
select
также работает над таблицами:
T:= table(1 = "y", 2 = "n", 3 = "n", 4 = "y", 5 = "y"): select(T, has, "y")
Следующее выражение является суммой, т.е. выражением типа "_plus"
. Мы извлекаем сумму всех условий, которые не содержат x
:
select(x^5 + 2*x + y - 4, _not@has, x)
Мы извлекаем все факторы, содержащие x
от следующего продукта. Результат является продуктом точно с одним фактором, и поэтому, не имеет синтаксический тип "_mult"
:
select(11*x^2*y*(1 - y), has, x)
delete T:
select
работает на последовательности выражения:
select((1, -4, 3, 0, -5, -2), testtype, Type::Negative)
Команда $ генерирует такие последовательности выражения:
select(i $ i = 1..20, isprime)
Атомарные объекты обработаны как последовательности выражения длины один:
select(5, isprime)
Следующим результатом является пустой объект null()
типа DOM_NULL
:
domtype(select(6, isprime))
Возможно передать “анонимную процедуру” select
. Это позволяет выполнять более комплексные действия с одним вызовом. В следующем примере команда anames(All)
возвращает набор всех идентификаторов, которые имеют значение на текущем сеансе MuPAD®. Оператор select
извлекает все идентификаторы, начинающиеся с буквы "h"
:
select(anames(All), x -> expr2text(x)[1] = "h")
|
Список, набор, таблица, последовательность выражения или выражение типа |
|
Процедура, возвращающая булево значение |
|
Любые объекты MuPAD, принятые |
Объект того же типа как входной объект.
object