Mercurial > repos > public > sbplib
comparison cell2sparse.m @ 0:48b6fb693025
Initial commit.
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Thu, 17 Sep 2015 10:12:50 +0200 |
parents | |
children | a5fa3c2d0aa3 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:48b6fb693025 |
---|---|
1 function A = cell2sparse(C) | |
2 n = row_height(C); | |
3 m = col_width(C); | |
4 | |
5 N = sum(n); | |
6 M = sum(m); | |
7 | |
8 A = sparse(N,M); | |
9 | |
10 n_ind = [0 cumsum(n)]; | |
11 m_ind = [0 cumsum(m)]; | |
12 | |
13 for i = 1:size(C,1) | |
14 for j = 1:size(C,2) | |
15 if ~has_matrix(C{i,j}) | |
16 continue | |
17 end | |
18 A(n_ind(i)+1:n_ind(i+1),m_ind(j)+1:m_ind(j+1)) = C{i,j}; | |
19 end | |
20 end | |
21 | |
22 end | |
23 | |
24 function m = col_width(C) | |
25 for j = 1:size(C,2) | |
26 for i = 1:size(C,1) | |
27 if ~has_matrix(C{i,j}) | |
28 continue | |
29 end | |
30 m(j) = size(C{i,j},2); | |
31 end | |
32 end | |
33 end | |
34 | |
35 function n = row_height(C) | |
36 for i = 1:size(C,1) | |
37 for j = 1:size(C,2) | |
38 if ~has_matrix(C{i,j}) | |
39 continue | |
40 end | |
41 n(i) = size(C{i,j},1); | |
42 end | |
43 end | |
44 end | |
45 | |
46 function b = has_matrix(c) | |
47 b = ~(isempty(c) || (numel(c)==1 && c == 0)); | |
48 end |