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).
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)
![]()
Однако между 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:
Если второй аргумент не является допустимым индексом, ошибка происходит:
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:
Для массивов количество индексов должно быть равно количеству размерностей массива:
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:
|
По существу таблица, список или массив. Также позволенный: hfarray, конечное множество, последовательность выражения или символьная строка |
|
Индексы. Для большинства “контейнеров” |
Запись x соответствие индексу. Когда x таблица, список или массив, возвращенная запись не оценена снова.
x