Инстанцируйте матричной переменной и оцените все условия LMI, включающие эту матричную переменную
mnewsys = setmvar(lmisys,X,Xval)
setmvar
устанавливает матричную переменную X с идентификатором X
к значению Xval
. Все условия, включающие X, оценены, постоянные условия обновляются соответственно, и X удален из списка матричных переменных. Описание получившейся системы LMI возвращено в newsys
.
Целочисленный X
является идентификатором, возвращенным lmivar
, когда X объявляется. Инстанцирование X с setmvar
не изменяет идентификаторы остающихся матричных переменных.
Функциональный setmvar
полезен, чтобы заморозить определенные матричные переменные и оптимизировать относительно остающихся единиц. Это экономит время путем предотвращения частичного или полного переопределения набора ограничений LMI.
Рассмотрите систему
x˙ = Ax + Bu
и проблема нахождения стабилизировавшегося закона обратной связи состояния u = Kx, где K является неизвестной матрицей.
Теоремой Ляпунова это эквивалентно нахождению P> 0 и K, таким образом что
(A + BK) P + P (A + BKT) + I <0.
С заменой переменной Y: = KP, это условие уменьшает до LMI
AP + PAT + BY + YT BT + I <0.
Этот LMI вводится командами
n = size(A,1) % number of states ncon = size(B,2) % number of inputs setlmis([]) P = lmivar(1,[n 1]) % P full symmetric Y = lmivar(2,[ncon n]) % Y rectangular lmiterm([1 1 1 P],A,1,'s') % AP+PA' lmiterm([1 1 1 Y],B,1,'s') % BY+Y'B' lmiterm([1 1 1 0],1) % I lmis = getlmis
Чтобы узнать, имеет ли эта проблема решение K для конкретной матрицы Ляпунова P = I, устанавливает P на I путем ввода
news = setmvar(lmis,P,1)
Получившаяся система LMI news
имеет только одну переменную Y = K. Его выполнимость оценена путем вызова feasp
:
[tmin,xfeas] = feasp(news) Y = dec2mat(news,xfeas,Y)
Вычисленный Y выполним каждый раз, когда tmin
<0.