trace.m
来自「matlab波形优化算法经常要用到的matlab toolbox工具箱:yalm」· M 代码 · 共 56 行
M
56 行
function Y=trace(X)
%TRACE (overloaded)
% Author Johan L鰂berg
% $Id: trace.m,v 1.6 2006/07/26 20:17:58 joloef Exp $
if isa(X,'blkvar')
X = sdpvar(X);
end
if X.typeflag~=0
error('Relational objects cannot be manipulated')
end
Y = X;
x_lmi_variables = X.lmi_variables;
lmi_variables = [];
n = X.dim(1);
m = X.dim(2);
if n == m % Standard case fast
ind = 1:(n+1):n^2;
Y.basis = sum(X.basis(ind,:),1);
ind = find(Y.basis(2:end));
if isempty(ind)
Y = full(Y.basis(1));
else
Y.basis = Y.basis([1 1+ind]);
Y.lmi_variables = X.lmi_variables(ind);
Y.dim(1) = 1;
Y.dim(2) = 1;
end
else
traceX = trace(reshape(X.basis(:,1),n,m));
Y.basis = traceX(:);
j = 1;
for i = 1:length(x_lmi_variables)
traceX = trace(reshape(X.basis(:,i+1),n,m))/1;
if (norm(traceX,inf)>0)
Y.basis(:,j+1) = traceX(:);
lmi_variables = [lmi_variables x_lmi_variables(i)];
j = j+1;
end
end
if isempty(lmi_variables)
Y = full(trace(reshape(X.basis(:,1),n,m)));
else
Y.dim(1) = size(traceX,1);
Y.dim(2) = size(traceX,2);
Y.lmi_variables = lmi_variables;
% Reset info about conic terms
Y.conicinfo = [0 0];
end
end
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?