Mercurial > repos > public > sbplib
annotate sparse2cell.m @ 200:ef41fde95ac4 feature/beams
Merged feature/grids into feature/beams.
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Mon, 13 Jun 2016 16:59:02 +0200 |
parents | d90f540f4137 |
children |
rev | line source |
---|---|
184
d90f540f4137
Added sparse2cell function.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
1 % sparse2cell breaks a sparse matrix up into a cell matrix of sparse matrices. |
d90f540f4137
Added sparse2cell function.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
2 % any zero submatrix creates a empty cell in the cell matrix. |
d90f540f4137
Added sparse2cell function.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
3 % A -- NxM sparse matrix |
d90f540f4137
Added sparse2cell function.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
4 % d1, d2 -- vectors of sub matrix sizes for each dimensions. Must have sum(di) == Ni. |
d90f540f4137
Added sparse2cell function.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
5 % Example: |
d90f540f4137
Added sparse2cell function.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
6 % C = sparse2cell(A,[5 10], [10 5]) |
d90f540f4137
Added sparse2cell function.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
7 function C = sparse2cell(A, d1, d2) |
d90f540f4137
Added sparse2cell function.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
8 [n, m] = size(A); |
d90f540f4137
Added sparse2cell function.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
9 if n ~= sum(d1) || m ~= sum(d2) |
d90f540f4137
Added sparse2cell function.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
10 error('sparse2cell:NonMatchingDim','The elements of d1 and d2 must sum to N and M.'); |
d90f540f4137
Added sparse2cell function.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
11 end |
d90f540f4137
Added sparse2cell function.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
12 |
d90f540f4137
Added sparse2cell function.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
13 C = cell(length(d1), length(d2)); |
d90f540f4137
Added sparse2cell function.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
14 I = 1; |
d90f540f4137
Added sparse2cell function.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
15 for i = 1:length(d1) |
d90f540f4137
Added sparse2cell function.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
16 J = 1; |
d90f540f4137
Added sparse2cell function.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
17 for j = 1:length(d2) |
d90f540f4137
Added sparse2cell function.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
18 Asub = A(I:(I + d1(i)-1), J:(J + d2(j)-1)); |
d90f540f4137
Added sparse2cell function.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
19 if nnz(Asub) == 0 |
d90f540f4137
Added sparse2cell function.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
20 C{i,j} = []; |
d90f540f4137
Added sparse2cell function.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
21 else |
d90f540f4137
Added sparse2cell function.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
22 C{i,j} = Asub; |
d90f540f4137
Added sparse2cell function.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
23 end |
d90f540f4137
Added sparse2cell function.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
24 J = J + d2(j); |
d90f540f4137
Added sparse2cell function.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
25 end |
d90f540f4137
Added sparse2cell function.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
26 I = I + d1(i); |
d90f540f4137
Added sparse2cell function.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
27 end |
d90f540f4137
Added sparse2cell function.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
28 end |