Все неопределенные системные классы (uss, ufrd) могут быть многомерными массивами. Это обеспечивает те же функциональные возможности, что и массивы LTI программного обеспечения Toolbox™ системы управления. Команда size возвращает вектор строки с размерами всех размеров.
Первые два измерения соответствуют выходам и входам системы. Любые размеры за пределами именуются размерами массива. Следовательно, если szM = size(M), то szM(3:end) - размеры массива размеров M.
Для этих типов объектов ясно, что первые два измерения (вывод и ввод системы) интерпретируются иначе, чем 3-е, 4-е, 5-е и более высокие измерения (которые часто моделируют параметризованную изменчивость поведения ввода/вывода системы).
umat объекты обрабатываются таким же образом. Первые два измерения - это строки и столбцы неопределенной матрицы. Любые размеры за пределами массива являются размерами массива.
Предположим M является umat, uss или ufrd, и что Yidx и Uidx являются векторами целых чисел. Тогда
M(Yidx,Uidx)
выбирает выходы (строки), на которые ссылается Yidx и входы (столбцы), на которые ссылается Uidx, сохраняя все размеры массива. Например, если size(M) равняется [4 5 3 6 7], то (например) размер M([4 2],[1 2 4]) является [2 3 3 6 7].
Если size(M,1)==1 или size(M,2)==1, то допускается одиночное индексирование на входах или выходах (строки или столбцы). Если Sidx является вектором целых чисел, то M(Sidx) выбирает соответствующие элементы. Все размеры массива сохраняются.
Если есть K размеры массива и idx1, idx2, ..., idxK являются векторами целых чисел, то
G = M(Yidx,Uidx,idx1,idx2,...,idxK)
выбирает выходы и входы, на которые ссылается Yidx и Uidx, соответственно, и выбирает из каждого размера массива «срезы», на которые ссылается idx1, idx2,..., idxK векторы индексов. Следовательно, size(G,1) равняется length(Yidx), size(G,2) равняется length(Uidx), size(G,3) равняется length(idx1), size(G,4) равняется length(idx2), и size(G,K+2) равняется length(idxK).
Если M имеет K размеры массива и менее K при выполнении привязки к массиву используются векторы индексов, после чего соблюдается соглашение MATLAB ® для одиночного индексирования. Например, предположимsize(M) равняется [3 4 6 5 7 4]. Выражение
G = M([1 3],[1 4],[2 3 4],[5 3 1],[8 10 12 2 4 20 18])
является действительным. Результат имеет size(G) равняется [2 2 3 3 7] . Последний вектор индекса [8 10 12 2 4 20 18] используется для ссылки в массив 7 на 4, сохраняя порядок, диктуемый единичной индексацией MATLAB (например, 10-й элемент массива 7 на 4 является элементом в позиции (3,2) в массиве).
Обратите внимание, что если M имеет либо один выход (строка), либо один вход (столбец), и
M имеет размеры массива, то нельзя комбинировать одиночную индексацию в размерах вывода/ввода вместе с индексацией в размерах массива. Это приведет к неоднозначности в том, как интерпретировать второй вектор индекса в выражении (т.е. «соответствует ли он ссылке на вход/выход или соответствует первой размерности массива?»).