matlab lmi 定义一个任意方阵,matlab中LMI应用说明
我們要實現的就利用LMI進行求解。
首先我們要用setlmis([])命令初始化一個LMI系統。
接下來,我們就要設定矩陣變量了。采用函數為lmivar
語法:X = lmivar(type,struct)
type=1: 定義塊對角的對稱矩陣。每一個對角塊或者是全矩陣,標量,或者是零陣。
如果X有R個對角塊,那么后面這個struct就應該是一個Rx2階的的矩陣,在此矩陣中,struct(r,1)表示第r個塊的大小,struct(r,2) 表示第r個塊的類型<1--全矩陣,0--標量,-1--零陣)。
比如一個矩陣有兩個對角塊,其中一個是2x2的全對稱矩陣,第二個是1x1的一個標量,那么該矩陣變量應該表示為X = lmivar(1, [2 1; 1 0]) 。
type=2: mxn階的矩陣,只需要寫作struct = [m,n]即可。
type=3: 其它類型。針對類型3,X的每一個條目(each entry of X)被定義為0或者是+(-)xn,此處xn代表了第n個決策變量。
那么針對我們的例子,我們如此定義變量:
% Q is a symmetric matrix, has a block size of 2 and this block is symmetric
Q = lmivar(1, [2 1]);
% S1 a symmeric matrix, size 2
S1 = lmivar(1, [2 1]);
% S2 is 1 by 1 matrix
S2 = lmivar(1, [1 0]);
% Type of 2, size 1 by 2
M = lmivar(2, [1 2]);
定義完成變量之后,我們就該用lmiterm來描述LMI中的每一個項了。Matlab 的官方文檔提示我們,如果要描述一個LMI只需要描述上三角或者下三角元素就可以了,否則會描述成另一個LMI。
When describing an LMI with several blocks, remember to specify only the terms in the blocks on or below the diagonal (or equivalently, only the terms in blocks on or above the diagonal).
語法為:lmiterm(termID,A,B,flag)
termID是一個四維整數向量,來表示該項的位置和包含了哪些矩陣變量。
termID(1)可以為+p或者-p,+p代表了這個項位于第p個線性矩陣不等式的左邊,-p代表了這個項位于第p個線性矩陣不等式的右邊。注意:按照慣例來講,左邊通常指較小的那邊。termID(2:3):
1、對于外部變量來說,取值為[0,0];
2、對于左邊或者右邊的內部變量來說,如果該項在(i,j)位置,取值[i,j]
termID(4):
1、對于外部變量,取值為0
2、對于A*X*B,取值X
3、對于A*X'*B,取值-X
總結
以上是生活随笔為你收集整理的matlab lmi 定义一个任意方阵,matlab中LMI应用说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 字节流转化为文件流_字节流转成字符串之后
- 下一篇: 基于matlab的数字下变频器的设计与仿