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

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

Added original make3d

File size: 852 bytes
Line 
1function sys = blocks(varargin)
2% BLOCKS Internal function (Not used)
3%
4% BLOCKS(X1,X2,X3,X4)  Tries to create a blocks-symmetric matrix
5%
6% Example: blocks(X1,X2,X3) creates [X1 X2;X' X3]
7%          blocks(X1,X2,X3,X4,X5,X6) creates [X1 X2 X3;X2' X4 X5;X3' X5' X6]
8%
9
10% Author Johan Löfberg
11% $Id: blocks.m,v 1.3 2005/02/10 16:43:32 johanl Exp $
12
13if rem(nargin,3)~=0
14    error('The number of blocks in a block-symmetric matrix has to be a multiple of 3')
15end
16
17m = nargin;
18n = max(roots([1 1 -2*m]));
19
20k = 1;
21Z = zeros(n);
22for i = 1:n
23    for j = i:n
24        Z(i,j)=k;k = k+1;
25    end
26end
27Z = (Z+Z')-diag(diag(Z));
28
29sys = [];
30for i = 1:n
31    sysrow = [];
32    for j = 1:1:n 
33        if j<i
34            sysrow = [sysrow varargin{Z(i,j)}];
35        else
36            sysrow = [sysrow varargin{Z(i,j)}'];     
37        end
38    end
39    sys = [sys;sysrow];
40end
Note: See TracBrowser for help on using the repository browser.