annotate sparse2cell.m @ 201:38f203f00f3a feature/grids

Exeendend tests of multiblock.DiffOp.
author Jonatan Werpers <jonatan@werpers.com>
date Tue, 14 Jun 2016 15:07:34 +0200
parents d90f540f4137
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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