Управление массивами для неопределенных объектов

Все неопределенные системные классы (uss, ufrd) могут быть многомерными массивами. Это предназначается, чтобы обеспечить ту же функциональность как массивы LTI программного обеспечения Control System 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]) 

isvalid. Результат имеет size(G), равняется [2 2 3 3 7]. Последний индексный [8 10 12 2 4 20 18] вектора используется к ссылке в 7 4 массив, сохраняя порядок, продиктованный MATLAB одна индексация (например, 10-й элемент массива 7 4, массив является элементом в (3,2) положение в массиве).

Обратите внимание на то, что, если M имеет или один вывод (строка) или один вход (столбец), и M имеет измерения массива, то это не допустимо, чтобы объединить одну индексацию в размерностях вывода/входа наряду с индексацией в измерениях массива. Это приведет к неоднозначности в том, как интерпретировать второй индексный вектор в выражении (т.е. “это соответствует ссылке ввода/вывода, или это соответствует первому измерению массива?”).

Похожие темы