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 |
