exponenta event banner

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

Все неопределенные системные классы (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 имеет измерения массива, то это не допустимо, чтобы объединить одну индексацию в размерностях вывода/входа наряду с индексацией в измерениях массива. Это приведет к неоднозначности в том, как интерпретировать второй индексный вектор в выражении (т.е. “это соответствует ссылке ввода/вывода, или это соответствует первому измерению массива?”).

Похожие темы