exponenta event banner

ctrb

Матрица управляемости

Синтаксис

Co = ctrb(A,B)
Co = ctrb(sys)

Описание

Co = ctrb(A,B) возвращает матрицу управляемости:

Co = [BABA2B... An − 1B]

где A - матрица n-на-n, B - матрица n-на-m, и Co имеет n строк и столбцов nm.

Co = ctrb(sys) вычисляет матрицу управляемости объекта state-space LTI sys. Этот синтаксис эквивалентен:

Co = ctrb(sys.A,sys.B);

Система управляется, если Co имеет полный ранг n.

Примеры

свернуть все

Определить A и B матрицы.

A = [1  1;
     4 -2];
B = [1 -1;
     1 -1];

Вычислительная матрица управляемости.

Co = ctrb(A,B);

Определите количество неконтролируемых состояний.

unco = length(A) - rank(Co)
unco = 1

Неуправляемое состояние указывает на то, что Co не имеет полного ранга 2. Поэтому управление системой невозможно.

Ограничения

Оценка ранга матрицы управляемости является плохо обусловленной; то есть он очень чувствителен к ошибкам округления и ошибкам в данных. Об этом можно судить из этого простого примера.

A = [1δ01], B = [1δ]

Эта пара управляется при δ≠0, но при δ < eps, где eps - относительная точность машины.ctrb(A,B) прибыль

[BAB] = [11δδ]

который не является полным званием. Для подобных случаев лучше определить управляемость системы с помощью ctrbf.

См. также

|

Представлен до R2006a