diff +blockmatrix/toMatrix.m @ 427:a613960a157b feature/quantumTriangles

merged with feature/beams
author Ylva Rydin <ylva.rydin@telia.com>
date Thu, 26 Jan 2017 15:59:25 +0100
parents 46aa0b6a10cd
children c14875cf7ae6
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+blockmatrix/toMatrix.m	Thu Jan 26 15:59:25 2017 +0100
@@ -0,0 +1,27 @@
+function A = toMatrix(bm)
+    if ~blockmatrix.isBlockmatrix(bm)
+        error('blockmatrix:toMatrix:NotABlockmatrix', 'Input is not a blockmatrix');
+    end
+
+    div = blockmatrix.getDivision(bm);
+    n = div{1};
+    m = div{2};
+
+    N = sum(n);
+    M = sum(m);
+
+    A = sparse(N,M);
+
+    n_ind = [0 cumsum(n)];
+    m_ind = [0 cumsum(m)];
+
+    for i = 1:size(bm,1)
+        for j = 1:size(bm,2)
+            if isempty(bm{i,j})
+                continue
+            end
+            % TODO: If this ever fails for large matrices. Try cell2mat instead.
+            A(n_ind(i)+1:n_ind(i+1),m_ind(j)+1:m_ind(j+1)) = bm{i,j};
+        end
+    end
+end