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 | |
---|
1 | function 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 | |
---|
10 | s = size(sp); |
---|
11 | if length(s) > 2 |
---|
12 | error 'diag not implemented for n-d arrays' |
---|
13 | elseif (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 | |
---|
21 | else |
---|
22 | % its a 2d matrix, get the main diagonal |
---|
23 | k = 1 + (0:(s(2)-1))*(s(1)+1); |
---|
24 | spd = sp(k); |
---|
25 | |
---|
26 | end |
---|
27 | |
---|
28 | |
---|
Note: See
TracBrowser
for help on using the repository browser.