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 в качестве первого аргумента. Такие объекты обработаны как последовательности с одним операндом.

Примеры

Пример 1

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:

Пример 2

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))

Пример 3

Возможно передать “анонимную процедуру” select. Это позволяет выполнять более комплексные действия с одним вызовом. В следующем примере команда anames(All) возвращает набор всех идентификаторов, которые имеют значение на текущем сеансе MuPAD®. Оператор select извлекает все идентификаторы, начинающиеся с буквы "h":

select(anames(All), x -> expr2text(x)[1] = "h")

Параметры

object

Список, набор, таблица, последовательность выражения или выражение типа DOM_EXPR

f

Процедура, возвращающая булево значение

p1, p2, …

Любые объекты MuPAD, принятые f как дополнительные параметры

Возвращаемые значения

Объект того же типа как входной объект.

Перегруженный

object

Смотрите также

Функции MuPAD