From 7834bd50faae09876e2976ff86860057bb205544 Mon Sep 17 00:00:00 2001
From: Elian Dib <elian.dib@inria.fr>
Date: Mon, 29 Apr 2019 08:34:40 +0200
Subject: [PATCH] Added functions to align, join and split matrices

---
 align.m     | 27 +++++++++++++++++++++++++++
 alignJoin.m | 33 +++++++++++++++++++++++++++++++++
 join.m      | 14 ++++++++++++++
 split.m     |  8 ++++++++
 4 files changed, 82 insertions(+)
 create mode 100644 align.m
 create mode 100644 alignJoin.m
 create mode 100644 join.m
 create mode 100644 split.m

diff --git a/align.m b/align.m
new file mode 100644
index 0000000..e101ed2
--- /dev/null
+++ b/align.m
@@ -0,0 +1,27 @@
+function [Val1,Off1,Val2,Off2] = align(Val1,Off1,Val2,Off2)
+%ALIGN Summary of this function goes here
+%   Detailed explanation goes here
+
+if isempty(Val1)
+    Val1 = Val2;
+    Off1 = Off2;
+elseif ~isempty(Val2)
+    Size1 = size(Val1);
+    Size2 = size(Val2);
+    
+    Max1 = Off1+Size1;
+    Max2 = Off2+Size2;
+    
+    Off_ = min(Off1,Off2);
+    Max_ = max(Max1,Max2);
+    
+    Val1 = padarray(Val1,Off1-Off_,nan,'pre');
+    Val2 = padarray(Val2,Off2-Off_,nan,'pre');
+    
+    Off1 = Off_;
+    Off2 = Off_;
+
+    Val1 = padarray(Val1,Max_-Max1,nan,'post');
+    Val2 = padarray(Val2,Max_-Max2,nan,'post');
+end
+end
\ No newline at end of file
diff --git a/alignJoin.m b/alignJoin.m
new file mode 100644
index 0000000..c0e88ab
--- /dev/null
+++ b/alignJoin.m
@@ -0,0 +1,33 @@
+function [Val1,Off1,Val2,Off2] = alignJoin(Val1,Off1,Val2,Off2)
+%ALIGNJOIN Summary of this function goes here
+%   Detailed explanation goes here
+
+if isempty(Val1)
+    Val1 = Val2;
+    Off1 = Off2;
+elseif ~isempty(Val2)
+    Size1 = size(Val1);
+    Size2 = size(Val2);
+    
+    Max1 = Off1+Size1;
+    Max2 = Off2+Size2;
+    
+    Off_ = min(Off1,Off2);
+    Max_ = max(Max1,Max2);
+    
+    Val1 = padarray(Val1,Off1-Off_,nan,'pre');
+    Val2 = padarray(Val2,Off2-Off_,nan,'pre');
+    
+    Off1 = Off_;
+    Off2 = Off_;
+
+    Val1 = padarray(Val1,Max_-Max1,nan,'post');
+    Val2 = padarray(Val2,Max_-Max2,nan,'post');
+    
+    M1 = ~isnan(Val1);
+    M2 = ~isnan(Val2);
+    
+    Val1(M1) = Val1(M1);
+    Val1(M2) = Val2(M2);
+end
+end
\ No newline at end of file
diff --git a/join.m b/join.m
new file mode 100644
index 0000000..511db61
--- /dev/null
+++ b/join.m
@@ -0,0 +1,14 @@
+function Val1 = join(Val1,Val2)
+%JOIN Summary of this function goes here
+%   Detailed explanation goes here
+
+if isempty(Val1)
+    Val1 = Val2;
+elseif ~isempty(Val2)
+    M1 = ~isnan(Val1);
+    M2 = ~isnan(Val2);
+    
+    Val1(M1) = Val1(M1);
+    Val1(M2) = Val2(M2);
+end
+end
\ No newline at end of file
diff --git a/split.m b/split.m
new file mode 100644
index 0000000..0e6b302
--- /dev/null
+++ b/split.m
@@ -0,0 +1,8 @@
+function [M1,M2] = split(M,Mask)
+%SPLIT Summary of this function goes here
+%   Detailed explanation goes here
+
+[M1,M2] = deal(M);
+M1(~Mask) = NaN;
+M2( Mask) = NaN;
+end
\ No newline at end of file
-- 
GitLab