source: proiecte/pmake3d/make3d_original/Make3dSingleImageStanford_version0.1/third_party/opt/yalmip/@sdpvar/trace.m @ 37

Last change on this file since 37 was 37, checked in by (none), 14 years ago

Added original make3d

File size: 1.3 KB
Line 
1function Y=trace(X)
2%TRACE (overloaded)
3
4% Author Johan Löfberg
5% $Id: trace.m,v 1.6 2006/07/26 20:17:58 joloef Exp $   
6
7if isa(X,'blkvar')
8    X = sdpvar(X);
9end
10
11if X.typeflag~=0
12        error('Relational objects cannot be manipulated')
13end
14
15Y = X;
16x_lmi_variables = X.lmi_variables;
17lmi_variables = [];
18n = X.dim(1);
19m = X.dim(2);
20
21if n == m % Standard case fast
22    ind = 1:(n+1):n^2;
23    Y.basis = sum(X.basis(ind,:),1);
24    ind = find(Y.basis(2:end));
25    if isempty(ind)
26        Y = full(Y.basis(1));
27    else
28        Y.basis = Y.basis([1 1+ind]);
29        Y.lmi_variables = X.lmi_variables(ind);
30        Y.dim(1) = 1;
31        Y.dim(2) = 1;
32    end
33else
34    traceX = trace(reshape(X.basis(:,1),n,m));
35    Y.basis = traceX(:);
36
37    j = 1;
38    for i = 1:length(x_lmi_variables)
39        traceX = trace(reshape(X.basis(:,i+1),n,m))/1;
40        if (norm(traceX,inf)>0)
41            Y.basis(:,j+1) = traceX(:);
42            lmi_variables = [lmi_variables x_lmi_variables(i)];
43            j = j+1;
44        end
45    end
46    if isempty(lmi_variables)
47        Y = full(trace(reshape(X.basis(:,1),n,m)));
48    else
49        Y.dim(1) = size(traceX,1);
50        Y.dim(2) = size(traceX,2);
51        Y.lmi_variables = lmi_variables;
52        % Reset info about conic terms
53        Y.conicinfo = [0 0];
54    end
55end
Note: See TracBrowser for help on using the repository browser.