⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 diag.m

📁 国外专家做的求解LMI鲁棒控制的工具箱,可以相对高效的解决LMI问题
💻 M
字号:
function Y=diag(X,k)
%DIAG (overloaded)

% Author Johan L鰂berg 
% $Id: diag.m,v 1.3 2005/01/21 08:30:33 johanl Exp $  

Y = X;
n = X.n;
m = X.m;

if nargin == 1
    k = 0;
end

% If it is a vector, all variables will be used
% so we have special code for this case
if min([n m])==1
	diagX = diag(X.basis(:,1),k);
	Y.basis = diagX(:);
	for i = 1:length(X.lmi_variables)
		diagX = diag(X.basis(:,i+1),k);
		Y.basis(:,i+1) = diagX(:);
	end   
	Y.lmi_variables = X.lmi_variables;
	Y.n = size(diagX,1);
	Y.m = size(diagX,2);
else
	lmi_variables = [];
	x_lmi_variables = X.lmi_variables;
	diagX = diag(reshape(X.basis(:,1),n,m),k);
	Y.basis = diagX(:);
	j = 1;
	for i = 1:length(x_lmi_variables)
		diagX = diag(reshape(X.basis(:,i+1),n,m),k);
		if (norm(diagX,inf)>0)
			Y.basis(:,j+1) = diagX(:);
			lmi_variables = [lmi_variables x_lmi_variables(i)];
			j = j+1;
		end
	end   
	Y.lmi_variables = lmi_variables;
	Y.n = size(diagX,1);
	Y.m = size(diagX,2);
end
Y = clean(Y);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -