source: proiecte/pmake3d/make3d_original/Make3dSingleImageStanford_version0.1/third_party/opt/yalmip/extras/@ndsdpvar/ndsdpvar.m @ 37

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

Added original make3d

File size: 1.0 KB
Line 
1function X = ndsdpvar(varargin)
2% NDSDPVAR Constructor for multi-dimensional SDPVAR object
3
4% Author Johan Löfberg
5% $Id: ndsdpvar.m,v 1.9 2006/07/28 06:27:01 joloef Exp $
6
7% Sometimes it is convenient to cast a 2D SDPVAR variables as an nD
8% variable
9if nargin == 1 & isa(varargin{1},'sdpvar')
10    X = varargin{1};
11    X = struct(X);
12    X.conicinfo = [0 0];
13    X = class(X,'ndsdpvar');
14    return
15end
16
17type  = 'symmetric';
18field = 'real';
19
20d = 0;
21i = 1;
22while i<=nargin
23    if isa(varargin{i},'double')
24        d = d + 1;
25    end
26    i = i + 1;
27end
28
29n = [varargin{1:d}];
30
31if nargin > d
32    type = varargin{d+1};
33    if n(1)~=n(2) & ~isempty(strmatch(type,'symmetric'))
34        error('non-square matrix cannot be symmetric');
35    end
36else
37    if n(1)==n(2)
38        type = 'symmetric';
39    else
40        type = 'full';
41    end
42end
43if nargin > d+1
44    field = varargin{d+2};
45end
46
47X = [];
48for i = 1:prod(n(3:end))
49    x = sdpvar(n(1),n(2),type,field);
50    X = [X;x(:)];
51end
52X = struct(X);
53X.dim = n;
54X = class(X,'ndsdpvar');
55X = clean(X);
Note: See TracBrowser for help on using the repository browser.