遇到一个求解线性矩阵不等式的问题,利用MATLAB进行编程求解的过程中遇到“Error using lmiterm (line 293)
lhs of LMI #2, block (4,2): term dimensions incompatible withother terms in same row”,但是我已经检查了许多次了,不论是pos(2,4)还是pos(4,2),不管是所在行还是所在列,矩阵的维数都和同一行和列的其他矩阵一致,不应该有这样的问题啊,实在是没办法了,求教大神帮忙看一下,我把不等式和程序都贴上来。
程序如下:
clear all;
clc;
ms=320;
mt=40;
ks=18000;
kt=200000;
cs=1000;
ct=10;
g = 9.8;
%控制器参数
rou = 1.6;
ite = 10000;
gama = 1;
w1 = 8*pi;%4Hz
w2 = 16*pi;%8Hz
wc =(w1+w2)/2;
xstmax = 0.1;%最大动行程100mm
umax = 2500;%最大主动出力2000N
A=[0 0 1 -1; 0 0 0 1; -ks/ms 0 -cs/ms cs/ms; ks/mt -kt/mt cs/mt -(cs+ct)/mt];%系统矩阵
B=[0; 0; 1/ms; -1/mt];%控制矩阵
B1=[0; -1; 0; ct/mt];
C1=[-ks/ms 0 -cs/ms cs/ms];%输出矩阵
C2=[1/xstmax 0 0 0; 0 kt/(ms+mt)/g 0 0];
D1=1/ms;%传递矩阵
%定义LMI
setlmis([]);
%首先定义决策变量
P = lmivar(1, [4 1]);
P1= lmivar(1, [4 1]);
Q = lmivar(1, [4 1]);
F = lmivar(2, [4 4]); %4*4矩阵
K1= lmivar(2, [1 4]); %1*4矩阵
%2nd pos(1 1)
lmiterm([2 1 1 Q], -1, 1);
%2nd pos(1 2)
lmiterm([2 1 2 P], 1, 1);
lmiterm([2 1 2 F], -1, 1);
%2nd pos(1 6)
lmiterm([2 1 6 Q], wc, 1);
%2nd pos(2 2)
lmiterm([2 2 2 Q], w1*w2, -1);
lmiterm([2 2 2 F], A, 1, 's');
lmiterm([2 2 2 K1], B, 1, 's');
%2nd pos(2 3)
lmiterm([2 2 3 0], B1);
%2nd pos(2 4)
lmiterm([2 2 4 F'], 1, C1');
lmiterm([2 2 4 K1'], 1, D1');
%2nd pos(2 5)
lmiterm([2 2 5 Q], wc, -1);
%2nd pos(3 3)
lmiterm([2 3 3 0],-1*gama^2);
%2nd pos(4 4)
lmiterm([2 4 4 0], -1);
%2nd pos(5 5)
lmiterm([2 5 5 Q], -1, 1);
%2nd pos(5 6)
lmiterm([2 5 6 P], 1, 1);
lmiterm([2 5 6 F], -1, 1);
%2nd pos(6 6)计算线性矩阵不等式(LMI)时
lmiterm([2 6 6 Q], w1*w2, -1);
lmiterm([2 6 6 F], A, 1, 's');
lmiterm([2 6 6 K1], B, 1, 's');
%2nd pos(6 7)
lmiterm([2 6 7 0], B1);
%2nd pos(6 8)
lmiterm([2 6 8 F'], 1, C1');
lmiterm([2 6 8 K1'], 1, D1');
%2nd pos(7 7)
lmiterm([2 7 7 0],-1*gama^2);
%2nd pos(8 8)
lmiterm([2 8 8 0], -1);
![matlab计算线性矩阵不等式(LMI)时出现维数与同一列不一致的问题]()
1.JPG |