Mercurial > repos > public > sbplib
diff cell2sparse.m @ 0:48b6fb693025
Initial commit.
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Thu, 17 Sep 2015 10:12:50 +0200 |
parents | |
children | a5fa3c2d0aa3 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cell2sparse.m Thu Sep 17 10:12:50 2015 +0200 @@ -0,0 +1,48 @@ +function A = cell2sparse(C) + n = row_height(C); + m = col_width(C); + + N = sum(n); + M = sum(m); + + A = sparse(N,M); + + n_ind = [0 cumsum(n)]; + m_ind = [0 cumsum(m)]; + + for i = 1:size(C,1) + for j = 1:size(C,2) + if ~has_matrix(C{i,j}) + continue + end + A(n_ind(i)+1:n_ind(i+1),m_ind(j)+1:m_ind(j+1)) = C{i,j}; + end + end + +end + +function m = col_width(C) + for j = 1:size(C,2) + for i = 1:size(C,1) + if ~has_matrix(C{i,j}) + continue + end + m(j) = size(C{i,j},2); + end + end +end + +function n = row_height(C) + for i = 1:size(C,1) + for j = 1:size(C,2) + if ~has_matrix(C{i,j}) + continue + end + n(i) = size(C{i,j},1); + end + end +end + +function b = has_matrix(c) + b = ~(isempty(c) || (numel(c)==1 && c == 0)); +end \ No newline at end of file