31 lines
826 B
Matlab
Executable File
31 lines
826 B
Matlab
Executable File
function [A,b,lmi_variables] = generateAB(varargin)
|
|
%GENERATEAB Internal function to generates linear equation system
|
|
|
|
if mod(nargin,2)~=0
|
|
error('Internal error in generateAB. Please report.');
|
|
end
|
|
|
|
lmi_variables = [];
|
|
n_eq = 0;
|
|
for r = 1:nargin/2
|
|
[n,m] = size(varargin{1+2*(r-1)});
|
|
n_eq = n_eq + n*m;
|
|
lmi_variables = [lmi_variables varargin{1+2*(r-1)}.lmi_variables(:)'];
|
|
end
|
|
lmi_variables = uniquestripped(lmi_variables);
|
|
|
|
A = spalloc(n_eq,length(lmi_variables),n_eq);
|
|
b = spalloc(n_eq,1,n_eq);
|
|
|
|
btop = 1;
|
|
atop = 1;
|
|
for r = 1:nargin/2
|
|
X = varargin{2*r-1};
|
|
[n,m] = size(X);
|
|
used_variables = find(ismembc(lmi_variables,X.lmi_variables));
|
|
A(atop:atop+n*m-1,used_variables) = X.basis(:,2:end);
|
|
b(btop:btop+n*m-1) =varargin{2*r}(:)-X.basis(:,1);
|
|
atop = atop+n*m;
|
|
btop = btop+n*m;
|
|
end
|