indexval

Индексный доступ к массивам и таблицам без оценки

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.

Синтаксис

indexval(x, i)
indexval(x, i1, i2, …)

Описание

indexval(x, i) и indexval(x, i1, i2, ...) приводят к записи x, соответствующего индексам i и i1, i2, ..., соответственно, без оценки.

Три вызова indexval(x, i), _index(x, i) и x[i] все возвращают элемент индекса i в массиве или hfarray или списке или таблице x. В отличие от _index и эквивалентного индексного оператора  [ ], однако, indexval возвращает соответствующую запись, не оценивая его. Это иногда желательно по причинам эффективности.

Аргументы i или i1, i2... должны быть допустимыми индексами x, в противном случае сообщение об ошибке распечатано (см. Пример 3). Когда несколько индексов i1, i2... даны, они интерпретированы как более многомерный индекс (см. Пример 4).

Первый аргумент x может также быть набором, строкой или последовательностью выражения. Однако в этих случаях indexval ведет себя точно как _index и индексный оператор  [ ]: это возвращает оценку соответствующего элемента. В частности, indexval не сглаживает свой первый аргумент.

Для всех других основных областей indexval ведет себя точно как _index: или ошибка происходит, или на символьный звонок indexval отвечают (см. Пример 3).

Примеры

Пример 1

indexval работает с таблицами:

T := table("1" = a, Be = b, `+` = a + b):
a := 1: b := 2:
indexval(T, Be), indexval(T, "1"), indexval(T, `+`)

В контрастном _index оценивает возвращенные записи:

_index(T, Be), _index(T, "1"), _index(T, `+`)

Следующая входная строка имеет то же значение как последнее:

T[Be], T["1"], T[`+`]

indexval работает с массивами, также. Поведение является тем же самым, но индексы должны быть положительными целыми числами:

delete a, b:
A := array(1..2, 1..2, [[a, a + b], [a - b, b]]):
a := 1: b := 2:
indexval(A, 2, 2), indexval(A, 1, 1), indexval(A, 1, 2)

_index(A, 2, 2), _index(A, 1, 1), _index(A, 1, 2)

A[2, 2], A[1, 1], A[1, 2]

delete A, T, a, b:

indexval работает списки, также:

delete a, b:
L := [a, b, 2]:
b := 5:
L[2], _index(L, 2), indexval(L, 2), op(L, 2)

Пример 2

Однако нет никакого различия между indexval и _index для всех других доступных объектов, например, наборы:

delete a, b:
S := {a, b, 2}:
b := 5:
S[2], _index(S, 2), indexval(S, 2), op(S, 2)

Точно так же нет никакого различия, когда первый аргумент является последовательностью выражения (который не сглажен indexval):

delete a, b: S := a, b, 2:
b := 5:
S[2], _index(S, 2), indexval(S, 2), op(S, 2)

delete L, S, a, b:

Пример 3

Если второй аргумент не является допустимым индексом, ошибка происходит:

A := array(1..2, 1..2, [[a, b], [a, b]]):
indexval(A, 3)
Error: Index dimension does not match. [array]
indexval(A, 1, 0)
Error: Invalid argument. [array]
indexval("12345", 6)
Error: Invalid index. [string]

Однако результатом indexval может также быть символьный вызов indexval:

T := table(1 = a, 2 = b):
indexval(T, 3)

delete X, i:
indexval(X, i)

delete A, T:

Пример 4

Для массивов количество индексов должно быть равно количеству размерностей массива:

A := array(1..2, 1..2, [[a, b], [a, b]]):
a := 1: b := 2:
indexval(A, 1, 2), indexval(A, 2, 1)

В противном случае ошибка происходит:

indexval(A, 1)
Error: Index dimension does not match. [array]

Таблицы могут иметь последовательности выражения как индексы, также:

delete a, b:
T := table((1, 1) = a, (2, 2) = b):
a := 1: b := 2:
indexval(T, 1, 1), indexval(T, 2, 2)

delete A, T, a, b:

Параметры

x

По существу таблица, список или массив. Также позволенный: hfarray, конечное множество, последовательность выражения или символьная строка

i, i1, i2, …

Индексы. Для большинства “контейнеров” x индексы должны быть целыми числами. Если x является таблицей, произвольные объекты MuPAD® могут использоваться в качестве индексов.

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

Запись x, соответствующего индексу. Когда x является таблицей, списком или массивом, возвращенная запись не оценена снова.

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

x

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

Области MuPAD

Функции MuPAD