source: MML/trunk/machine/SOLEIL/common/toolbox/SymbolicPolynomials/SymbolicPolynomials/@sympoly/diag.m @ 4

Last change on this file since 4 was 4, checked in by zhangj, 10 years ago

Initial import--MML version from SOLEIL@2013

File size: 581 bytes
Line 
1function spd=diag(sp)
2% sympoly/diag: diag for a sympoly vector or array, only
3% usage: spd=diag(sp);
4%
5% arguments:
6%  sp - matrix or vector sympoly object
7%
8%  spd - scalar sympoly object containing the determinant
9
10s = size(sp);
11if length(s) > 2
12  error 'diag not implemented for n-d arrays'
13elseif (s(1)==1) || (s(2) == 1)
14  % sp is a vector, build a diagonal matrix from it
15  n = length(sp);
16  spd = sympoly(zeros(n,n));
17 
18  k = 1+(0:(n-1))*(n+1)
19  spd(k) = sp(:);
20 
21else
22  % its a 2d matrix, get the main diagonal
23  k = 1 + (0:(s(2)-1))*(s(1)+1);
24  spd = sp(k);
25 
26end
27
28
Note: See TracBrowser for help on using the repository browser.